我有3个选择查询:
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
我创建了一个主表:
create table dbo.UltimateTable
(
ColumnA varchar(max),
ColumnB varchar(max),
ColumnC varchar(max)
)
我想在上面的UltimateTable
中插入以上3个选择查询作为其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以外的值变为null。
如何一次插入所有3个SQL查询?
编辑:也许我应该更清楚地提出这个问题。以上3个选择查询的结果如下: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
阿努拉格
答案 0 :(得分:1)
如果您确实希望每个语句的每个结果行都有一列,则可以使用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
答案 1 :(得分:0)
insert into dbo.UltimateTable(ColumnA,ColumnB,ColumnC)
values (select .., select .., select ..)
如果每个选择结果有多个值,则可以使用" STUFF" word将结果连接成单个varchar行。这已在Can I Comma Delimit Multiple Rows Into One Column?和更多问题中得到解答。