我的表看起來像這樣:如何在新欄中使用SUM的輸出?
Ride_distance Ride_type
100 A
50 B
25 B
25 C
10 C
40 A
... ...
現在我要總結每種類型的所有的距離,並顯示他們是這樣的:
Tot_Type_A Tot_Type_B Tot_Type_C
140 75 35
我該怎麼辦呢?
我的表看起來像這樣:如何在新欄中使用SUM的輸出?
Ride_distance Ride_type
100 A
50 B
25 B
25 C
10 C
40 A
... ...
現在我要總結每種類型的所有的距離,並顯示他們是這樣的:
Tot_Type_A Tot_Type_B Tot_Type_C
140 75 35
我該怎麼辦呢?
與組開始由:
SELECT SUM(Ride_distance),Ride_type FROM rides GROUP BY Ride_type
如果必須在同一行中有他們,使用pivot:
SELECT 'TotalRide' as Total_Ride_Length, [A], [B], [C]
FROM
(SELECT Ride_distance, Ride_type FROM rides) AS SourceTable
PIVOT (
SUM(Ride_distance) FOR Ride_type IN ([A], [B], [C])
) AS PivotTable;
是的,這是可能的,但你必須寫每種類型的case
聲明:
select
sum(case ride_type when 'A' then ride_distance else 0 end) as tot_type_A,
sum(case ride_type when 'B' then ride_distance else 0 end) as tot_type_B,
sum(case ride_type when 'C' then ride_distance else 0 end) as tot_type_C
from your_table
這部分解決了我的問題:我仍然以三行結束。 – jorrebor 2011-12-21 12:14:53
@jorrebor我修正了這個查詢,現在它變得更簡單了,它也可能非常有效。 – 2011-12-21 20:43:07
使用PIVOT
;
select
A as Tot_Type_A,
B as Tot_Type_B,
C as Tot_Type_C
from
dbo.the_table
pivot (
sum(Ride_distance) for Ride_type in ([A],[B],[C])
) pvt
你需要他們在同一行,或三個獨立的行會的工作? – dasblinkenlight 2011-12-21 10:35:31
在同一行中。 – jorrebor 2011-12-21 12:16:01