[英]Find date of first occurrence at the group level in SQL
我希望構建一個查詢,以在 ID 級別首次記錄特定事件時檢索日期字段。 下面的“FIRST_DATE”字段是我想要實現的。
在此示例中,2020 年 10 月是 ID_FIELD 1 具有非零值的第一個日期,因此 2020 年 10 月作為所有 ID_FIELD 1 行的 FIRST_DATE 應用。 目的是能夠計算自 ID 值從 0 變為 1 以來經過的時間量。使用 Oracle SQL Developer。
ID_FIELD | DATE_FIELD | 價值 | 第一次約會 |
---|---|---|---|
1 | 20 年 7 月 1 日 | 0 | 01-OCT-20 |
1 | 20 年 8 月 1 日 | 0 | 01-OCT-20 |
1 | 01-SEP-20 | 0 | 01-OCT-20 |
1 | 01-OCT-20 | 1 | 01-OCT-20 |
1 | 20 年 11 月 1 日 | 1 | 01-OCT-20 |
1 | 20 年 12 月 1 日 | 1 | 01-OCT-20 |
2 | 20 年 7 月 1 日 | 0 | 20 年 8 月 1 日 |
2 | 20 年 8 月 1 日 | 1 | 20 年 8 月 1 日 |
2 | 01-SEP-20 | 1 | 20 年 8 月 1 日 |
謝謝!
您可以使用min
的分析版本,並結合 case 表達式:
select id_field, date_field, value,
min(case when value != 0 then date_field end) over (partition by id_field) as first_date
from your_table;
db<>fiddle ,包括幾個計算經過天數的版本,具體取決於您想要做什么。
SELECT id_field, MIN(DECODE(VALUE, 0, NULL, DATE_FIELD))
FROM table_name
GROUP BY id_field
然后,您可以將其用作更新語句的一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.