2015-09-09 68 views
0

我的表看起來像這樣SQL數據透視行到列?

enter image description here

我想行轉動到表頭。

如果我使用:

SELECT [USER],[DIVISION], [COMPANY],[RIGHTS] FROM 
    (SELECT [USER],[ATTRIBUTE],[VALUE],[RIGHTS] FROM [AGDA_MANUAL].[dbo].[TEST] WHERE [PROC] = 'FINANCE') AS T1 
    PIVOT (MAX([VALUE]) FOR [ATTRIBUTE] IN ([DIVISION],[COMPANY])) AS T2 

enter image description here

這是幾乎我想要什麼

,但有沒有辦法在樞軸不要用MAX?當我使用MAX ??時,我將丟失DIVSION 010和COMPANY 1的DOMAIN \ USER1。

任何人都可以幫我嗎?

**** UPDATE *************

我錯過了一個專欄中,我需要的,因爲我會用更多的行結束(因爲你一說) 。

enter image description here

+0

的Microsoft SQL Server 2012 – Nils

+0

你能否澄清你想要的輸出給ÿ我們的樣本數據? – jpw

+1

你真的需要更加詳細地描述你在這裏做什麼,目前它不明確和/或似乎你的模型可能不完整。具體來說,User1的結果應該是什麼?用戶1可以看到***和***的四個組合; '023,1'和'023,2'和'010,1'和'010,2'。所有恰好都有'管理'權限,但是如果一行或多行在'權限'中具有不同的值,則不會指示如何執行。 – MatBailie

回答

1

的問題是,樞需要一些方式來連接師和公司數據。 MAX允許它這樣做 - 否則它如何知道哪個公司與哪個DIVISION相關聯。 對此的一個解決方案是添加一個人爲的列(通過RowNumber()生成),您將添加到分組中(與PROC & USER一起) 您仍需要確定DIV 023是否屬於COMP 1,2或3

你最終可能會以類似

FINANCE | DOMAIN\USER1 | 1 | DIVISION | 023 
FINANCE | DOMAIN\USER1 | 2 | DIVISION | 010 
FINANCE | DOMAIN\USER1 | 1 | COMPANY | 1 
FINANCE | DOMAIN\USER1 | 2 | COMPANY | 2 
FINANCE | DOMAIN\USER2 | 1 | COMPANY | 3 

現在你可以轉動並有公司& DIVISION爲在同一行的列