2011-12-21 64 views
3

我的表看起來像這樣:如何在新欄中使用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 

我該怎麼辦呢?

+0

你需要他們在同一行,或三個獨立的行會的工作? – dasblinkenlight 2011-12-21 10:35:31

+0

在同一行中。 – jorrebor 2011-12-21 12:16:01

回答

2

與組開始由:

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; 
3
SELECT SUM(Ride_distance), Ride_type 
    FROM your_table 
GROUP BY Ride_type 
+0

以錯誤的格式提供正確的信息。 OP要求將其旋轉。 – MatBailie 2011-12-21 10:42:40

+1

@Dems - 我看到了這個,但是我沒有看到這裏的旋轉感。我的意思是你有相同的信息,爲什麼還要創造額外的工作? – 2011-12-21 10:43:39

+0

然後請求上下文。可能有一個原因,你可能會也可能不會反駁。但是,這只是部分解決了OP所要求的內容。 – MatBailie 2011-12-21 10:46:29

2

是的,這是可能的,但你必須寫每種類型的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 
+0

這部分解決了我的問題:我仍然以三行結束。 – jorrebor 2011-12-21 12:14:53

+0

@jorrebor我修正了這個查詢,現在它變得更簡單了,它也可能非常有效。 – 2011-12-21 20:43:07

0

使用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