将多个 select 查询插入 SQL 服务器中的 table

Insert mutiple select queries into a table in SQL Server

我有 3 select 个查询:

select 
    convert(varchar(50),(CONVERT(varchar(50), enq_id) + '/' + CONVERT(varchar(50), YEAR(fy_year)))) as EnqIDFyYear 
from 
    Sample.dbo.enquiry_details

select 
    A.profile_name 
from 
    profile_profile A, enquiry_details B 
where 
    A.profile_id = B.client_id

select 
    A.group_name 
from 
    mas_group_type A, enquiry_details B 
where 
    A.group_id = B.group_id

我创建了一个大师table:

create table dbo.UltimateTable
(
    ColumnA varchar(max),
    ColumnB varchar(max),
    ColumnC varchar(max)
)

我想在上面的 UltimateTable 中插入上面的 3 select 个查询作为它的 3 列。

如何做到这一点?

我试过

insert into dbo.UltimateTable(ColumnA) 
   select 
      convert(varchar(50),(CONVERT(varchar(50), enq_id) + '/'  + CONVERT(varchar(50), YEAR(fy_year)))) as EnqIDFyYear 
   from 
      Sample.dbo.enquiry_details

但它让我一次插入一个,ColumnA 以外的值变为空值。

如何一次性插入所有 3 个 SQL 查询?

编辑:也许我应该把问题说得更清楚些。以上3次select查询结果如下:

EnqIDFyYear
1/2015
2/2014

profile_name
ProfileA
ProfileB

group_name
GroupA
GroupB

我想像这样将它们插入 UltimateTable

EnqIDFyYear  profile_name  group_name
    1/2015   ProfileA      GroupA
    2/2014   ProfileB      GroupB

阿努拉格

insert into dbo.UltimateTable(ColumnA,ColumnB,ColumnC) 
values (select .., select .., select ..)

如果每个 select 结果有多个值,您可以使用 "STUFF" word 将结果连接成单个 varchar 行。这已在 Can I Comma Delimit Multiple Rows Into One Column? 和更多问题中得到解答。

如果您真的希望每条语句的每个结果行有一列,您可以使用 UNION 功能:

insert into UltimateTable (Column A, Column B, Column C) 
select 
    convert(varchar(50),(CONVERT(varchar(50), enq_id) + '/' + CONVERT(varchar(50), YEAR(fy_year)))) as EnqIDFyYear, null, null
from 
    Sample.dbo.enquiry_details

UNION

select 
    null, A.profile_name, null
from 
    profile_profile A, enquiry_details B 
where 
    A.profile_id = B.client_id


UNION

select 
     null, null, A.group_name 
from 
    mas_group_type A, enquiry_details B 
where 
    A.group_id = B.group_id

如果您想要连接结果集,您应该使用 JOIN 语法:

insert into UltimateTable (Column A, Column B, Column C) 
select 
    convert(varchar(50),(CONVERT(varchar(50),enq_id)+'/'+CONVERT(varchar(50),YEAR(fy_year)))), 
    P.profile_name, 
    G.group_name 
from Sample.dbo.enquiry_details D
join profile_profile P ON P.profile_id=D.client_id
JOIN mas_group_type G ON G.group_id=D.group_id