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.
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.