2016-01-06 26 views
1

看到這是我2016年的第一篇文章,祝大家新年快樂。SQL Server例外報告腳本

再次,我堅持一個棘手的報告,我必須從SQL Server中提取。

我有一個Documents兩個表叫DocumentsDoctype

列:

File_Name, Date, Region, DoctypeID 

數據這裏面列如下。是

DoctypeID, Document_Type 

數據這列內,如下所示:

00001,2016-01-06,JHB,1d187ecc 
    00001,2016-01-06,JHB,bccc05f9 
    00001,2016-01-06,JHB,fe697be0 
    00001,2016-01-06,JHB,bbae8c73 
    00002,2016-01-06,JHB,1d187ecc 
    00002,2016-01-06,JHB,bccc05f9 
    00002,2016-01-06,JHB,fe697be0 

列在Doctype

1d187ecc, Collection 
bccc05f9, Image 
fe697be0, Log 
bbae8c73, Sent to warehouse. 

我的查詢需要使用上面的數據給我下面的結果。

File_Name,Collection, Image, Log, Sent to Warehouse,Region 
00001,   1,  1, 1,  1,   JHB 
00002,   1,  1, 1,  0,   JHB 

我希望上面的說法有道理,我該怎麼做呢?

謝謝大家提前。

+0

我認爲你正在尋找[Pivot](https://technet.microsoft.com/en-us/library/ms177410(v = sql.105).aspx) – JodyT

+0

HI @JodyT謝謝你的回覆,我對SQL中Pivot的知識非常有限,有沒有例子? – user3309798

+0

您需要確認這些列是唯一的六列還是可以存在許多其他類型的列 –

回答

4

正如你可以試試這個:

SELECT FILE_NAME, ISNULL([Collection],0) AS [Collection], ISNULL([Image],0) AS [Image], 
ISNULL([Log],0) AS [Log], ISNULL([Sent to warehouse],0) AS [Sent to warehouse], Region 
FROM ( 
    SELECT FILE_NAME, Document_Type, COUNT(Document_Type) AS Frequency, Region 
    FROM documents d,doctype dt WHERE d.DoctypeID = dt.DoctypeID 
    GROUP BY Document_Type, FILE_NAME,REGION 
) AS s 
PIVOT 
(
    SUM(Frequency) 
    FOR [Document_Type] IN ([Collection], [Image], [Log], [Sent to warehouse]) 
)AS pvt 

這裏有一個細節reference,你可以閱讀。

+0

嗨@Suvro,這很好,謝謝你。 – user3309798

+0

非常歡迎您@ user3309798。 – Suvro