我有一张表有两列。一列是时间戳,另一列是工时数量。
我需要获得另一个月份表,有两列。一个应该是一个月中的一天,另一个应该是当天的总和(劳动力)。
我很容易知道,但问题是,当有一天没有任何劳动时,那一行就不会出现。我需要那一行,日期编号和零作为总和(人工)
感谢您的帮助
我现在获得的表是
day labor
1 8
2 4
3 7
4 3
6 7
7 9
继续......
如你所见,第5天没有出现,因为这一天没有劳动
我需要一天看起来像... 5,工党0
答案 0 :(得分:3)
首先,您应该生成天的日期范围(例如2014年至2015年),然后left join
您的人工统计数据,示例:
--generating days
WITH days AS
(SELECT DATE '2014-01-01' + LEVEL - 1 day1
FROM dual
CONNECT BY LEVEL <= DATE '2015-01-01' - DATE '2014-01-01')
SELECT day.day1, NVL(sum(labor.labor),0) labot_sum FROM days
LEFT JOIN labor ON trunc(labor.timestamp_col) = days.day1
GROUP BY days.day1
修改强>
如果您有整数天,生成应该类似于
SELECT LEVEL day1 FROM dual CONNECT BY LEVEL <= 365