简体   繁体   中英

Creating monthly report

I'm creating a monthly report and I have a table:

DriverName    TodayDate     WeekNo    KM
----------    ----------    ------    ---
ALI           02-01-2018    1         2
ALI           04-01-2018    1         4
ALI           08-01-2018    2         3
ALI           09-01-2018    2         8
AHMED         05-02-2018    1         9
AHMED         05-02-2018    1         9
...
So on

And I'm trying the results like:

DriverName    KM/W1  KM/W2  KM/W3  KM/W4  KM/W5   Total
----------    -----  -----  -----  -----  -----   -----
ALI           6      11     0      0      0       17
AHMED         18     0      0      0      0       18

I have tried but don't know how should I write inner select query:

Select DriverName,(Select KM FROM Traveling Where WeekNo=1) as KM/W1, ... Where Traveling

Hope this helps:

SELECT drivername, 
       Sum(CASE 
             WHEN weekno = 1 THEN km 
             ELSE 0 
           END) AS wk1km, 
       Sum(CASE 
             WHEN weekno = 2 THEN km 
             ELSE 0 
           END) AS wk2km, 
       Sum(CASE 
             WHEN weekno = 3 THEN km 
             ELSE 0 
           END) AS wk3km, 
       Sum(CASE 
             WHEN weekno = 4 THEN km 
             ELSE 0 
           END) AS wk4km, 
       Sum(CASE 
             WHEN weekno = 5 THEN km 
             ELSE 0 
           END) AS wk5km, 
       Sum(km)  AS total 
FROM   (SELECT drivername, 
               weekno, 
               Sum(km) km 
        FROM   traveling 
        GROUP  BY drivername, 
                  weekno) AS t 
GROUP  BY drivername 
ORDER  BY total; 

Here is sample sqlfiddle to test.

Snapshot of demo run:

在此处输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM