我输入日期为DD.MM.YYYY HH:MM:SS格式,数量和工人名称
这是数据的样子:
ENTRY_DATE WORKER_ID QUANTITY
04.06.2018 7:54 34020893 7
04.06.2018 7:56 34020893 8
04.06.2018 7:54 33236047 9
11.04.2018 1:08 21753391 10
11.04.2018 1:07 22165585 4
12.04.2018 13:33 85048731 3
13.06.2018 1:28 49359718 8
11.04.2018 7:38 21753391 2
11.04.2018 7:26 23978525 8
11.04.2018 7:24 60054767 5
11.04.2018 7:23 55013910 6
11.04.2018 7:26 85048731 1
11.04.2018 7:29 85048731 1
11.04.2018 7:28 76149054 6
11.04.2018 7:29 85048731 1
11.04.2018 7:30 6142395 5
11.04.2018 7:30 12696509 4
11.04.2018 7:28 73004538 7
11.04.2018 7:30 85048731 2
11.04.2018 7:30 85048731 8
11.04.2018 7:27 50991253 5
11.04.2018 7:30 98493524 8
11.04.2018 7:28 28851347 2
11.04.2018 7:30 79286529 3
12.04.2018 8:24 34020893 7
12.04.2018 13:24 21753391 1
12.04.2018 13:31 82997006 9
12.04.2018 13:32 21753391 4
12.04.2018 13:25 34020893 3
我需要什么: WORKER_ID工作了x小时,处理了y个单位
WORKER_ID TOTAL_QUANTITY TOTAL_HOURS_WORKED
82997006 50 08:36:56
但是开始和结束时间不在两行之间,而是在多行之间。
我当前的SQL:
SELECT
TO_CHAR(be.ENTRY_DATE, 'YYYY/MM/DD HH24:MI:SS') AS ENTRY_DATE
,WORKER_ID
,QUANTITY
FROM BINEDIT_ENTRIES
WHERE REGION_ID = 2
AND be.ENTRY_DATE BETWEEN TO_DATE({RUN_DATE_YYYYMMDD}, 'YYYYMMDD')-1
AND TO_DATE({RUN_DATE_YYYYMMDD}, 'YYYYMMDD')
答案 0 :(得分:0)
解决方案是我按日期排序并使用固定在worker上的LAG函数。 https://docs.microsoft.com/en-us/sql/t-sql/functions/lag-transact-sql?view=sql-server-2017