2016-10-10 3 views
1

SQLのCASE内の属性または全く複数の私は、ファイルが見つかった場合web_pub_subfileテーブルからfile_namesを比較し、情報を表示しますどのSQLクエリを持って

SELECT file_name, CASE WHEN EXISTS(SELECT 1 
      FROM web_pub_subfile t JOIN infocard_1 ic on ic.info_card_id=t.info_card_id 
      WHERE E.file_name = t.file_name and lower(ic.vault_name) ='SU-SPEC-RELEASE') 
      THEN 'YES' 
      ELSE 'NO' END AS File_Found 
FROM (VALUES 
('00924.dwg'), 
('00960.dwg'), 
('00973.dwg'), 
('00984.dwg'), 
('01008.dwg')) E(file_name) 

私はこのフォーマットで出力を得ることができます

 
file_name File_Found 
---------------------- 
00924.dwg NO 
00960.dwg YES 
00973.dwg YES 
00984.dwg YES 
01008.dwg YES 

ABOVEクエリを使用して、TABLE - > web_pub_subfileからさらに2つの属性(document_numとvault_name)を表示できますか?

 
file_name File_Found document_num vault 
----------------------------------------------------- 
00924.dwg NO   Test1   SU-SPEC-RELEASE 
00960.dwg YES   Test2   SU-SPEC-RELEASE 
00973.dwg YES   Test3   SU-SPEC-RELEASE 
00984.dwg YES   Test4   SU-SPEC-RELEASE 
01008.dwg YES   Test5   SU-SPEC-RELEASE 
+1

を移動することができます。 – Esty

+0

ファイルが見つからなくても 'Test1'、' SU-SPEC-RELEASE'を一行目に持っていく方法 –

+0

@Prdp二番目の出力は例です。私はweb_pub_subfileテーブルからその情報を取得しようとしています。 –

答えて

0

CASE文が複数の列

を返すことはできませんあなたはDEF web_pub_subfileとinfocard_1テーブルを提供sub-query

left join
SELECT file_name, 
     CASE 
     WHEN t.file_name IS NOT NULL THEN 'YES' 
     ELSE 'NO' 
     END AS File_Found, 
     document_num, -- Replace it with the original column name 
     vault_name -- Replace it with the original column name 
FROM (VALUES ('00924.dwg'), 
       ('00960.dwg'), 
       ('00973.dwg'), 
       ('00984.dwg'), 
       ('01008.dwg')) E(file_name) 
     LEFT JOIN web_pub_subfile t 
       ON E.file_name = t.file_name 
     LEFT JOIN infocard_1 ic 
       ON ic.info_card_id = t.info_card_id 
       AND Lower(ic.vault_name) = 'SU-SPEC-RELEASE' 
+0

おかげで。それはE.file_name ON infocard_1 IC LEFT JOINのJOINのweb_pub_subfileトン ON ic.info_card_id = t.info_card_id AND(下段(ic.vault_name)= 'SU-SPEC-RELEASE') LEFTを働いたが、最後の文を変更しなければなりませんでした= t.file_name –

関連する問題