2014-12-13 58 views
0

好日子所有,輸出使用透視從兩個表

我有以下兩個表:

tMaster

TruckID  TruckRegisterName 
 
------------------------------ 
 
1     DL 1LK8520 
 
2     DL 4XB9634 
 
3     DL 1FH4253 
 
4     DL 9EA1539 
 
5     DL 1XV5408

DailyCons

TruckID  TripDate  DieselConsumed 
 
--------------------------------------------- 
 
1    22-Nov-14    396.0 
 
1    1-Nov-14    743.0 
 
4    11-Nov-14    226.0 
 
2    16-Nov-14    556.0 
 
5    30-Nov-14    745.0 
 
4    3-Nov-14    357.0 
 
1    14-Nov-14    459.0 
 
3    10-Nov-14    142.0 
 
2    4-Nov-14    855.0 
 
3    23-Nov-14    393.0 
 
4    19-Nov-14    680.0 
 
5    14-Nov-14    416.0 
 
2    18-Nov-14    800.0 
 
2    16-Nov-14    996.0 
 
4    25-Nov-14    236.0 
 
5    18-Nov-14    126.0 
 
3    3-Nov-14    901.0

我一直在問到有沒有下面的輸出

----------------------------------------------------------------------------- 
 
         TruckID 
 
---------------------------------------------------------------------------- 
 
Date    1   2   3   4   5 
 
----------------------------------------------------------------------------- 
 
1-Nov-14  743.0 \t \t \t \t 
 
3-Nov-14        901.0  357.0 \t 
 
4-Nov-14 \t \t   855.0 \t \t \t 
 
10-Nov-14 \t       142.0 \t \t 
 
11-Nov-14          226.0 \t 
 
14-Nov-14  459.0          416.0 
 
16-Nov-14    1552.0 
 
18-Nov-14     800.0       126.0 
 
19-Nov-14          680.0 \t 
 
22-Nov-14  396.0 \t \t \t \t 
 
23-Nov-14        393.0 \t \t 
 
25-Nov-14          236.0 \t 
 
30-Nov-14             745.0

我明白,上面將基於旋轉功能,但不知道如何去做。最重要的是,我被告知我必須使用聚合函數,但是我的輸出沒有涉及任何計算。 感謝以上任何幫助。

+0

你能告訴到目前爲止,你已經嘗試了什麼? – EWit 2014-12-13 10:47:20

+0

你使用什麼DBMS?關於計算:如果你不需要計算,你可以使用任何聚合函數,它不會影響結果。 – Dmitry 2014-12-13 11:03:52

回答

0

所有你需要的是conditional SUM

SELECT TripDate, 
     Sum(CASE WHEN TruckID = 1 THEN DieselConsumed END) [1], 
     Sum(CASE WHEN TruckID = 2 THEN DieselConsumed END) [2], 
     Sum(CASE WHEN TruckID = 3 THEN DieselConsumed END) [3], 
     Sum(CASE WHEN TruckID = 4 THEN DieselConsumed END) [4], 
     Sum(CASE WHEN TruckID = 5 THEN DieselConsumed END) [5] 
FROM DailyCons 
GROUP BY TripDate 

或使用Pivot

SELECT * 
FROM (SELECT * 
     FROM DailyCons)a 
     PIVOT (Sum(DieselConsumed) 
      FOR TruckID IN([1], 
          [2], 
          [3], 
          [4], 
          [5])) piv