通过WHERE生成包含来自一列的多个值的结果

zui*_*iqo 1 sql sql-server

我对SQL缺乏经验,所以我的措辞可能完全错误.如果有人可以重新解释我的问题,我认为谷歌很容易.使用Ms-SQL Server 2008.

我有一个表,我用以下列记录导入:

importId
date
filename
Run Code Online (Sandbox Code Playgroud)

在我的其他表中,我每天导入三个不同的表.这些可以通过文件名识别(例如contracts_20170105.csv,accounts_20170105.csv,...),我每天只有一种文件.

我想要的结果如下:

date importId_contracts importId_accounts 
Run Code Online (Sandbox Code Playgroud)

我可以通过使用单独识别每个

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

但我不知道如何将结果合并到上述形式中.

如何在SQL"俚语"中调用它?

谢谢!

Gio*_*uri 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
Run Code Online (Sandbox Code Playgroud)