0
我正在嘗試瀏覽表並檢索缺勤頻率指示符。我已經有了一個查詢,可以按月計算缺席的次數。問題是,我需要比較當前記錄與其他人(在同一個表'測試')來檢查一個條件,這將有助於我的頻率計算。 我考慮新頻率的規則是:當兩個疾病週期不連續,並且他們之間有4天的差距。PL/SQL檢查選擇語句中的條件計數內是否存在記錄
所以,我嘗試代碼,使用條件計數()如下:
WITH test (id, start_abs, end_abs, tmp) AS
(SELECT id, start_abs, end_abs, 0 AS tmp
FROM emp_absences
UNION ALL
SELECT id, start_abs + 1, end_abs, tmp + 1
FROM test
WHERE end_abs - start_abs > 0)
SELECT id, TO_CHAR(start_abs, 'yyyy-mm') AS abs_month,
COUNT(DISTINCT start_abs) AS nbr_abs_month,
COUNT(CASE WHEN NOT EXISTS (SELECT *
FROM test b
WHERE a.id = b.id AND a.start_abs - 4 = b.start_abs)
THEN debut_horaire ELSE NULL
END) AS frequency
FROM test a
GROUP BY 1, 2))
我想知道是否有可能通過這種方式這樣做呢? 非常感謝。
Oracle版本:12.1.0.2.0
你需要解釋你的答案,而不僅僅是一堆後的代碼 – Jonathan
它似乎工作,但對我來說,它需要很長的時間顯示效果 – mistafl0
你有沒有在表列start_abs一個指數? –