1

我创建了一个简单的选择查询,看起来像 excel 中的 vlookup 函数,如下查询

SELECT [myDB].[dbo].[intrafreq_cell].[st_umts_hua_intra_relation_key]
    ,[myDB].[dbo].[umts_df_relation].[cell_name]
    ,[myDB].[dbo].[umts_df_relation].[n_cell_name]
    ,CASE 
        WHEN [myDB].[dbo].[umts_df_relation].[st_umts_df_relation_key] IS NULL
            THEN 'FALSE'
        ELSE 'TRUE'
        END
FROM [myDB].[dbo].[intrafreq_cell]
LEFT OUTER JOIN [myDB].[dbo].[umts_df_relation] ON [myDB].[dbo].[intrafreq_cell].[st_umts_hua_intra_relation_key] = [myDB].[dbo].[umts_df_relation].[st_umts_df_relation_key]
WHERE [myDB].[dbo].[umts_df_relation].[st_umts_df_relation_key] = 'FALSE'

现在我需要基于此查询创建一个包含相同列的表,但通过调用此列为包含TRUE&的列创建一个新列FALSEmissing_rel_in_df

我只想使用CREATE TABLE查询而不是SELECT TABLE基于此查询的SELECT查询

4

3 回答 3

1

您可以使用SELECT . . . INTO

SELECT . . .
INTO <table_name>
FROM [myDB].[dbo].[intrafreq_cell] LEFT OUTER JOIN
     [myDB].[dbo].[umts_df_relation] 
     ON [myDB].[dbo].[intrafreq_cell].[st_umts_hua_intra_relation_key] = [myDB].[dbo].[umts_df_relation].[st_umts_df_relation_key] 
 WHERE [myDB].[dbo].[umts_df_relation].[st_umts_df_relation_key] = 'FALSE';

通过这种方式,您将自动创建表,其中包含从select语句返回的所需数据。在 SQL ServerCREATE TABLE中的语句是独立工作的。您不能将其与select语句合并。

如果您不想要数据,只有模式,那么您可以添加where带有错误条件的子句,例如:

WHERE 1 = 0;
于 2020-01-30T08:36:48.557 回答
1

您只需要在 SELECT 部分的末尾添加一个 INTO 以指示您要使用该查询的结果创建一个新表。

  SELECT 
      [myDB].[dbo].[intrafreq_cell].[st_umts_hua_intra_relation_key]
      ,[myDB].[dbo].[umts_df_relation].[cell_name]
      ,[myDB].[dbo].[umts_df_relation].[n_cell_name]
      ,CASE WHEN [myDB].[dbo].[umts_df_relation].[st_umts_df_relation_key] IS NULL THEN 'FALSE' ELSE  'TRUE' END AS missing_rel_in_df
  INTO MY_NEW_TABLE     
  FROM [myDB].[dbo].[intrafreq_cell] 
       LEFT OUTER JOIN [myDB].[dbo].[umts_df_relation] ON [myDB].[dbo].[intrafreq_cell].[st_umts_hua_intra_relation_key] = [myDB].[dbo].[umts_df_relation].[st_umts_df_relation_key] 
  WHERE [myDB].[dbo].[umts_df_relation].[st_umts_df_relation_key] = 'FALSE'

PS:请记住为您的计算列设置名称“missing_rel_in_df”,以便该列在新表上具有此名称。

于 2020-01-30T08:38:16.290 回答
1

您也可以使用Into,如下所示。

Select * into <NewTablenameTobeCreated> from <oldAvailableTablename>

您可以在选择记录时传递条件,例如 where 条件、聚合函数、top n 等。

如果将 into 命令分为两部分,将很容易理解。

第一部分是您要为其创建表的列,另一部分是数据源列,就像普通的选择语句一样。

于 2020-01-30T08:40:09.453 回答