2017-01-10 5 views
1

私はSQLに慣れていないので、私の言い回しが間違っている可能性があります。誰かが私の質問を言い換えることができたら、私はそれが簡単にgoogleになると思う。 MS-SQL Server 2008のWHEREによって1つの列から複数の値を含む結果を生成

を使用して、私は次の列で輸入をログテーブルがあります。私の他のテーブルで

importId 
date 
filename 

を、私は1日に3つの異なるテーブルをインポートします。これらはファイル名(contracts_20170105.csv、accounts_20170105.csvなど)で識別でき、1日に各タイプのファイルが1つだけあります。

私の望ましい結果は、次のようになります。

date importId_contracts importId_accounts 

私は

SELECT 
    importId 
FROM 
    imports 
WHERE 
    CONVERT(DATE, date) = '2017-01-05' AND 
    SUBSTRING(import.filename, 1, 5) = 'Accou' 

を使用して、個別に各1を識別することができますが、私は上記のフォームに結果を結合する方法がわかりません。

これはSQLのスラングでどのように呼び出されますか?

ありがとうございました!

答えて

5

あなたがタイプごとに、毎日1つのだけのファイルを持っている場合、これは動作します:完璧に動作

select date, 
     max(case when filename like 'contracts%' then importId end) as importId_contracts 
     max(case when filename like 'accounts%' then importId end) as importId_accounts 
from Imports 
where date = '2017-01-05' 
group by date 
+0

は、あなたに感謝を!それ/類似のテクニックの具体的な名前はありますか? – phi

+1

これは「条件付き集約」と呼ばれます。 –

関連する問題