我有這個查詢:
SELECT user_id, from_loc_id, to_loc_id, to_char(dstamp, 'hh24:mi:ss')
FROM inventory_transaction
WHERE code = 'Pick'
AND substr(work_group,1,6) = 'BRANCH'
AND dstamp BETWEEN to_date('24/02/2022 17:00:00', 'dd/mm/yyyy hh24:mi:ss') AND
to_date('24/02/2022 18:00:00', 'dd/mm/yyyy hh24:mi:ss')
ORDER BY user_id;
這就是輸出:

我的預期輸出是:

我試圖使用滯后,但并沒有真正奏效。我剛剛意識到我需要添加第二個 ORDER BY,所以首先是用戶,其次是 to_char(dstamp, 'hh24:mi:ss')。
所有解決方案都非常感謝。謝謝你。
uj5u.com熱心網友回復:
您可以使用NUMTODSINTERVAL帶day引數的函式并應用于SUBSTR提取hours:minutes:seconds部分,因為您的資料位于特定日期內,例如
SELECT t.user_id,
t.dstamp,
SUBSTR(
NUMTODSINTERVAL(dstamp - LAG(dstamp)
OVER (PARTITION BY user_id ORDER BY dstamp),'day'),
12,8) AS time_diff
FROM t
Demo
編輯:上述情況適用于列dstamp被認為是日期資料型別,如果其資料型別是時間戳,則使用以下包含日期 轉換的查詢
SELECT t.user_id,
t.dstamp,
SUBSTR(
NUMTODSINTERVAL(CAST(dstamp AS date) - LAG(CAST(dstamp AS date))
OVER (PARTITION BY user_id ORDER BY CAST(dstamp AS date)),'day'),
12,8) AS time_diff
FROM t
Demo
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/434223.html
上一篇:重繪另一個架構中的索引統計資訊
