2017-06-01 95 views
0

還有一次,另一個問題。我有以下表格:SQL - 樞軸還是Unpivot?

|assemb.|Repl_1|Repl_2|Repl_3|Repl_4|Repl_5|Amount_1|Amount_2|Amount_3|Amount_4|Amount_5| 
|---------------------------------------------------------------------------------------| 
|4711001|111000|222000|333000|444000|555000|  1|  1|  1|  1|  1| 
|---------------------------------------------------------------------------------------| 
|4711002|222000|333000|444000|555000|666000|  1|  1|  1|  1|  1| 
|---------------------------------------------------------------------------------------| 

在這裏,我需要什麼:

|Article|Amount| 
|--------------| 
| 111000|  1| 
|--------------| 
| 222000|  2| 
|--------------| 
| 333000|  2| 
|--------------| 
| 444000|  2| 
|--------------| 
| 555000|  2| 
|--------------| 
| 666000|  1| 
|--------------- 

Repl_1到Repl_10是大會的更替文章。我可以有n個程序集以及10個代表文章。最後,我需要概述所有組件數量的所有文章。

THX。

最佳格爾茨 貝吉塔

+0

也許這https://stackoverflow.com/questions/44300613/how-to-unpivot-for-multiple-columns-sqlserver – TriV

+0

是。謝謝。嘗試CROSS APPLY是我需要的。現在?我如何投票給你?還是讓我去剔除我的問題? –

+0

你可以用你的答案編輯你的文章:) – TriV

回答

0

這可能是使用UNION ALL實現它的最快方式。不過,我建議您規範化表

SELECT Article, SUM(Amount) FROM (
    SELECT Repl_1 AS Article, SUM(Amount_1) AS Amount FROM #Test GROUP BY Repl_1 
    UNION ALL 
    SELECT Repl_2 AS Article, SUM(Amount_2) AS Amount FROM #Test GROUP BY Repl_2 
    UNION ALL 
    SELECT Repl_3 AS Article, SUM(Amount_3) AS Amount FROM #Test GROUP BY Repl_3 
    UNION ALL 
    SELECT Repl_4 AS Article, SUM(Amount_4) AS Amount FROM #Test GROUP BY Repl_4 
    UNION ALL 
    SELECT Repl_5 AS Article, SUM(Amount_5) AS Amount FROM #Test GROUP BY Repl_5 
) tbl GROUP BY Article