我有一张表,其中包含一堆日期和每个日期的小时数(有点像时间表)。 我可以按项目名称排序,但我希望能够按特定周排序。 例如,如果您单击 5 月 6 日标题,您将获得项目 5,然后是项目 3,然后是其他没有时间的项目。
我能做到:
SELECT DISTINCT jobno, COALESCE(SUM(hours), 0) AS weekHours
FROM gusTime
WHERE gusTime.date>='2024-04-29'
GROUP by jobno
ORDER BY weekHours DESC;
但是 weekHours 是所有周的总和。
所以,我尝试了这个:
SELECT DISTINCT jobno, COALESCE(SUM(hours), 0) AS weekHours
FROM gusTime
WHERE gusTime.date>='2024-04-29'
AND (gusTime.date BETWEEN '2024-05-06' AND '2024-05-10')
GROUP by jobno
ORDER BY weekHours DESC;
但是这只返回项目 3 和 5,没有时间的项目不再显示。 我如何计算特定周的 weekHours SUM 并按其排序,并且没有时间保留项目?
您需要 DATE“2024-05-06”的时间。您可以通过条件聚合来获取它们
SELECT
jobno,
COALESCE(SUM(CASE WHEN gusTime.date = DATE '2024-05-06' THEN hours END), 0) AS weekHours
FROM gusTime
WHERE gusTime.date >= DATE '2024-04-29'
GROUP by jobno
ORDER BY weekHours DESC;