2017-01-10 26 views
1

我對SQL沒有經驗,所以我的措辭可能完全錯誤。如果有人可以更改我的問題,我認爲這將很容易谷歌。使用MS-SQL Server 2008的生成包含多個值的結果,其中包含來自某列的多個值

我有,我原木進口用下面的表:

importId 
date 
filename 

在我的其他表,我導入每天三個不同的表。這些可以通過文件名(例如contracts_20170105.csv,accounts_20170105.csv,...)來標識,並且我每天只有一種類型的文件。

我想要的結果看起來是這樣的:

date importId_contracts importId_accounts 

我可以用

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

單獨識別每個人,但我不知道如何將結果合併成上述形式。

這將如何在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

這就是所謂的「條件聚合」 –

相關問題