2017-06-15 57 views
-1

如何從此表中獲得這些結果?我不完全確定它是否應該參加工會或加入。任何幫助將不勝感激。SQL Table Self Join(or Union?)Trouble

WorkOrderID Activity  PlannedDuration ActualDuration 
11   Activity 1 4     3.5 
11   Activity 2 4     3.6 
11   Activity 3 4     5 
11   Activity 4 8     7.2 
11   Activity 5 6     6 
22   Activity 1 4     3.5 
22   Activity 2 4     4 
22   Activity 3 4     3.9 
22   Activity 4 8     12 
22   Activity 6 3     3 

結果

Activity  ActualDuration11 ActualDuration22 
Activity 1  3.5     3.5 
Activity 2  3.6     4 
Activity 3  5     3.9 
Activity 4  7.2     12 
+1

使用樞軸可能? – Hackerman

+0

我正在考慮用一個案例陳述來確定合適的專欄。 「WorkOrderID」只有11和22嗎? –

回答

0

您可以通過加入來自同一個表的兩個SELECT聲明並加入它們來完成此操作。查詢可能看起來像這樣:

SELECT * FROM 
    (SELECT Activity, PlannedDuration, ActualDuration as ActualDuration11 
    FROM YOUR_TABLE 
    WHERE WorkOrderID = 11) t1 
JOIN 
    (SELECT Activity, PlannedDuration, ActualDuration as ActualDuration22 
    FROM YOUR_TABLE 
    WHERE WorkOrderID = 22) t2 
     ON t1.Activity = t2.Activity; 
+0

謝謝!非常棒! – dbreienrk1

0

試試這個:

select foo.Activity, foo.ActualDuration as ActualDuration11, foobar.ActualDuration as ActualDuration22 
from (select Activity, ActualDuration from TABLENAME where WorkOrderID = 11) as foo 
join (Select Activity, ActualDuration from TABLENAME where WorkOrderID = 22) as foobar on (foo.Activity = foobar.Activity); 

它採用加盟。您可能需要調整它(通過添加一個組等等),以使其適用於您的實際數據庫,但這應該是一個很好的框架。

在我的測試情況下,上面的查詢返回以下:

Activity | ActualDuration11 | ActualDuration12 
------------+------------------+----------------- 
Activity 1 | 3.5   | 3.5 
Activity 2 | 3.6   | 4 
Activity 3 | 5    | 3.9 
(3 rows) 

希望它能幫助!