2013-08-21 42 views
0

有誰知道一個簡單的方法來創建此結果的支點:我想顯示SQL服務器 - 簡單的方法來創建數據透視

SELECT [0-1] = SUM(CASE WHEN AGE >= 0 AND AGE <= 1 THEN 1 ELSE 0 END), 
     [1-2] = SUM(CASE WHEN AGE > 1 AND AGE <= 2 THEN 1 ELSE 0 END), 
     [2-3] = SUM(CASE WHEN AGE > 2 AND AGE <= 3 THEN 1 ELSE 0 END) 
    FROM dbo.Persons 

[0-1] [1-2] [2-3] [3-4] 
12  45  29 5 

這一結果與查詢創建列值作爲行即輸出應該是這樣的:

[0-1]  12 
[1-2]  45 
[2-3]  29 
[3-4]  5 

鏈接到文章/博客也歡迎。請建議一個簡單易用的解決方案。

回答

1

下面是一個使用cross join和聚集的方式:我喜歡這種方法,因爲它很容易增加新的年齡範圍

select ages.minage, ages.maxage, 
     sum(case when age > ages.minage and age <= ages.maxage then 1 else 0 end) as cnt 
from dbo.Persons cross join 
    (select -1 as minage, 1 as maxage union all 
     select 1, 2 union all 
     select 2, 3 
    ) as ages 
group by ages.minage, ages.maxage 

。注意這還包括範圍。

+0

出現錯誤:「列'ages.minage'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。」 – user1254053

相關問題