2017-09-19 28 views
-1

1つのテーブルから3つの列を取り出し、別の列の1つの列に入れたいと思っています。複数の列を1つに選択

だから私は、このクエリを実行したい

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) 
+1

どの[DBMS](https://en.wikipedia.org/wiki/DBMS)製品を使用していますか? Postgres?オラクル? "_SQL_"はクエリ言語であり、特定のデータベース製品の名前ではありません。 –

答えて

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はとにかく値を返すので、あなたはおそらく合体をスキップすることができます。)

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について言及していないので、それを考慮する必要があります。

関連する問題