2010-07-26 40 views
2

的表格列出了多個事件,每個事件有四個屬性(列),稱他們爲A,B,C,P像PIVOT但值不是離散

這將是simpleto支點得到一個表的A柱,B,C,P = 1,P = 2,P = 3等

但是,我需要的列是A,B,C,P < 1,P < 2,P < 3等換句話說,如果一行「簡單」方式是X,Y,Z,7,3,5,2,那麼我實際需要的是X,Y,Z,7,10,15,因爲任何小於N的P也小於N + 1。

我知道我可以計算出值(X,Y,Z,7,10,15,17),將它們加載到一個臨時表中,並且支持它,但也許有一些簡單的說我的SQL人才沒有立即認出?

如果重要,結果將在SSRS中結束。

回答

1

如果我理解正確,那麼這應該工作。

SELECT 
    A, 
    B, 
    C, 
    SUM(CASE WHEN P < 1 THEN 1 ELSE 0 END) AS P1, 
    SUM(CASE WHEN P < 2 THEN 1 ELSE 0 END) AS P2, 
    SUM(CASE WHEN P < 3 THEN 1 ELSE 0 END) AS P3, 
    SUM(CASE WHEN P < 4 THEN 1 ELSE 0 END) AS P4 
FROM 
    Events 
GROUP BY 
    A, 
    B, 
    C 

這不是動態的。例如,如果您在那裏有一行,並且P = 4,那麼它不會爲P增加一行。< 5.它也嚴格使用<而不是< =。

+0

謝謝,那確實有效。這幾乎是我計算它們的意思,但比加載臨時表更簡單。我以爲我早已將它作爲答案進行了檢查。 – WGroleau 2012-03-27 22:24:23