2012-06-02 128 views
2

我在SQl中很新,這是我的要求。SQL從聯合結果合併行並計算

TableA 
operation route measurement 
A   No 200 
A   Yes 300 
B   No 400 
B   Yes 500 

我想這是結果

Operation MeasurementNo MeasurementYes MeasureDifference 
A   200   300    100 
B   400   500    100 

所以操作字段進行分組。同時,操作的兩個測量值必須合併爲一行。

The MeasureDifference = MeasurementYes - MeasurementNo

用SQL實現它看起來並不難,但我只是一個新手。任何幫助表示讚賞。

回答

3

或者使用分組和有條件聚集:

SELECT 
    operation, 
    SUM(CASE route WHEN 'No' THEN measurement END) AS MeasurementNo, 
    SUM(CASE route WHEN 'Yes' THEN measurement END) AS MeasurementYes, 
    SUM(CASE route WHEN 'Yes' THEN measurement END) 
    - SUM(CASE route WHEN 'No' THEN measurement END) AS MeasurementDifference 
FROM atable t 
GROUP BY 
    operation 
+0

謝謝,這解決了我的問題... –

2

使用JOIN:

SELECT 
    MNo.operation AS Operation, 
    MNo.measurement AS MeasurementNo, 
    MYes.measurement AS MeasurementYes, 
    MYes.measurement - MNo.measurement AS MeasureDifference 
FROM TableA AS MNo 
JOIN TableA AS MYes 
ON MNo.operation = MYes.operation 
AND MNo.route = 'No' 
WHERE MYes.route = 'Yes'