我正在嘗試將入院轉移與初始索引入院分組。到目前為止,我已經能夠根據自上次出院以來的時間將每次入院歸類為“索引”或“轉移”。現在我正在嘗試將同一護理集中的入院分組在一起(例如,每個索引入院及其相關的轉移)。
我已經嘗試創建一個episode_id欄位以使用適當的索引準入來分組傳輸。我試圖設定episode_id按uli(個人識別符號)和admitdate_dt(入學日期)排序,然后遍歷每一行。我想有episode_id=以前的episode_id如果admission_type是轉移。如果admission_type是索引,我希望episode_id等于前一個episode_id 1。下面代碼的問題(我認為)是它不是單獨回圈遍歷每一行,而是一次運行所有行,當前值為NULL除第一行之外的所有行,我手動設定的。如何撰寫代碼以依次回圈遍歷每一行并在下面獲得所需的輸出?
ALTER TABLE dad_index_admissions_2
ADD episode_id INT; -- Creating an episode id field
UPDATE admissions
SET episode_id = 1
WHERE seqnum = (SELECT seqnum FROM admissions ORDER BY uli, admitdate_dt FETCH NEXT 1 ROWS ONLY);
-- Setting the first row with an episode_id of 1. Seqnum is primary key for admissions table. ULI is individual identifier.
SELECT CASE WHEN episode_id = 1 THEN 1 WHEN admission_type = 'transfer' THEN (LAG(episode_id) OVER(PARTITION BY uli ORDER BY uli, admitdate_dt))
WHEN admission_type = 'index' THEN ((LAG(episode_id 1) OVER(ORDER BY uli, admitdate_dt)))
END AS episode_id, admitdate_dt, disdate_dt, uli, admission_type
FROM admissions; -- My attempt to generate values for episode_id.
所需輸出示例:
| 劇集id | 承認日期_dt | disdate_dt | 烏里 | 錄取型別 |
|---|---|---|---|---|
| 1 | 2022 年 1 月 1 日 - 1 月 | 2022 年 1 月 2 日 | 001 | 指數 |
| 1 | 2022 年 1 月 2 日 | 2022 年 1 月 10 日 | 001 | 轉移 |
| 1 | 2022 年 1 月 10 日至 1 月 | 2022 年 1 月 20 日 | 001 | 轉移 |
| 2 | 2022 年 1 月 1 日 - 1 月 | 2022 年 1 月 5 日 - | 002 | 指數 |
| 3 | 2022 年 1 月 10 日至 1 月 | 2022 年 1 月 20 日 | 002 | 指數 |
| 3 | 2022 年 1 月 20 日 | 2022 年 1 月 25 日 - | 002 | 轉移 |
uj5u.com熱心網友回復:
計算index行數:
SELECT COUNT(CASE admission_type WHEN 'index' THEN 1 END)
OVER (ORDER BY uli, admitdate_dt)
AS episode_id,
admitdate_dt,
disdate_dt,
uli,
admission_type
FROM admissions;
其中,對于樣本資料:
CREATE TABLE admissions (admitdate_dt, disdate_dt, uli, admission_type) AS
SELECT DATE '2022-01-01', DATE '2022-01-02', '001', 'index' FROM DUAL UNION ALL
SELECT DATE '2022-01-02', DATE '2022-01-10', '001', 'transfer' FROM DUAL UNION ALL
SELECT DATE '2022-01-10', DATE '2022-01-20', '001', 'transfer' FROM DUAL UNION ALL
SELECT DATE '2022-01-01', DATE '2022-01-05', '002', 'index' FROM DUAL UNION ALL
SELECT DATE '2022-01-10', DATE '2022-01-20', '002', 'index' FROM DUAL UNION ALL
SELECT DATE '2022-01-20', DATE '2022-01-25', '002', 'transfer' FROM DUAL;
輸出:
EPISODE_ID ADMITDATE_DT DISDATE_DT 城市土地學會 ADMISSION_TYPE 1 22 年 1 月 1 日 22 年 1 月 2 日 001 指數 1 22 年 1 月 2 日 22 年 1 月 10 日 001 轉移 1 22 年 1 月 10 日 22 年 1 月 20 日 001 轉移 2 22 年 1 月 1 日 22 年 1 月 5 日 002 指數 3 22 年 1 月 10 日 22 年 1 月 20 日 002 指數 3 22 年 1 月 20 日 22 年 1 月 25 日 002 轉移
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494092.html
