我希望能够从一个表中取出三列并将它们放入另一个表中的一列中。
所以我想做这个查询,
SELECT Ref.Gender_Id,
NHS1.Name,
NHS2.Name,
NHS3.Name
FROM DDS.Referrals Ref
LEFT JOIN DDS.NHSCommunicationNeed NHS1 ON NHS1.Id = REF.NHSCommunicationNeed1_Id
LEFT JOIN DDS.NHSCommunicationNeed NHS2 ON NHS2.Id = REF.NHSCommunicationNeed2_Id
LEFT JOIN DDS.NHSCommunicationNeed NHS3 ON NHS3.Id = REF.NHSCommunicationNeed3_Id
然后将其插入到像这样的表中
#Tbl(GenderId, Value)
答案 0 :(得分:0)
insert into Tbl (GenderId, Value)
select Ref.Gender_Id,
coalesce(NHS1.Name, '') || coalesce(NHS2.Name, '') || coalesce(NHS3.Name, '')
from ...
连接名称。 ANSI SQL使用||
,但有些产品改为+
或concat()
。
使用coalesce()
来避免空值。 (如果其中一个参数为null,则ANSI SQL的并置返回null。)(但是,当与null值连接时,某些dbms仍会返回一个值,因此您可以跳过coalesce。)
答案 1 :(得分:0)
基本语法:
INSERT INTO Tbl(Gender_Id,Value)
SELECT Ref.Gender_Id,
CONCAT(NHS1.Name,NHS2.Name,NHS3.Name) -- Check NOTE
FROM DDS.Referrals Ref
LEFT JOIN DDS.NHSCommunicationNeed NHS1 ON NHS1.Id = REF.NHSCommunicationNeed1_Id
LEFT JOIN DDS.NHSCommunicationNeed NHS2 ON NHS2.Id = REF.NHSCommunicationNeed2_Id
LEFT JOIN DDS.NHSCommunicationNeed NHS3 ON NHS3.Id = REF.NHSCommunicationNeed3_Id
注意: CONCAT
(连接2个或更多列)在不同的DBMS中的处理方式不同。由于您没有提到您正在使用的DBMS,因此您必须考虑到这一点。