我有一張這樣的桌子:
| 截止日期 | 旗幟 |
|---|---|
| 2019-02-01 | 錯誤的 |
| 2019-01-01 | 錯誤的 |
| 2018-12-01 | 錯誤的 |
| 2018-11-01 | 真的 |
| 2018-10-01 | 錯誤的 |
| 2018-09-01 | 錯誤的 |
| 2018-08-01 | 真的 |
輸出表是:
| 截止日期 | 旗幟 | 團體 |
|---|---|---|
| 2019-02-01 | 錯誤的 | 1 |
| 2019-01-01 | 錯誤的 | 1 |
| 2018-12-01 | 錯誤的 | 1 |
| 2018-11-01 | 真的 | 2 |
| 2018-10-01 | 錯誤的 | 3 |
| 2018-09-01 | 錯誤的 | 3 |
| 2018-08-01 | 真的 | 4 |
我試過使用滯后函式,使用這個查詢
SELECT
*,
LAG(flag, 1, 'FALSE') OVER (ORDER BY due_date DESC) AS lag_flag
FROM
tableName
結果會變成這樣:
| 截止日期 | 旗幟 | 滯后標志 |
|---|---|---|
| 2019-02-01 | 錯誤的 | 錯誤的 |
| 2019-01-01 | 錯誤的 | 錯誤的 |
| 2018-12-01 | 錯誤的 | 錯誤的 |
| 2018-11-01 | 真的 | 錯誤的 |
| 2018-10-01 | 錯誤的 | 真的 |
| 2018-09-01 | 錯誤的 | 錯誤的 |
| 2018-08-01 | 真的 | 錯誤的 |
現在我被困在這一步。任何人都可以向我建議接下來的步驟嗎?(也請告訴我查詢)
注意:我使用的是 SQL Server
uj5u.com熱心網友回復:
用 1 標記組的開始并計算起始標記的滾動總數。
select due_date, flag, sum(f) OVER (ORDER BY due_date desc) x
from(
select due_date, flag,
case when LAG(flag, 1, 'unknown') OVER (ORDER BY due_date desc) = flag then 0 else 1 end f
from tbl
) t
ORDER BY due_date desc
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/483664.html
上一篇:在多行上替換字串
下一篇:套接字在讀取之前關閉
