选择多列为一列

时间:2017-09-19 09:23:30

标签: sql

我希望能够从一个表中取出三列并将它们放入另一个表中的一列中。

所以我想做这个查询,

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)

2 个答案:

答案 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,因此您必须考虑到这一点。