我的表格如下所示,還有很多電子郵件。該列product
可以包含NULL
或No
值。
電子郵件 | 日期 | 產品 |
---|---|---|
電子郵件1 | 2020-12-15 20:31:18 | 產品1 |
電子郵件1 | 2020-12-15 20:32:28 | 產品1 |
電子郵件1 | 2020-12-15 20:33:48 | 產品1 |
電子郵件1 | 2020-12-15 20:34:23 | 無效的 |
電子郵件1 | 2020-12-15 20:35:10 | 產品2 |
電子郵件1 | 2020-12-15 20:35:48 | 產品2 |
電子郵件1 | 2020-12-15 20:36:09 | 不 |
電子郵件1 | 2020-12-15 20:37:45 | 不 |
電子郵件1 | 2020-12-15 20:38:10 | 不 |
電子郵件1 | 2020-12-15 20:39:28 | 產品3 |
我的意圖是為NULL
or產品分配不是orNo
的列的先前值。喜歡:product
NULL
No
電子郵件 | 日期 | 產品 |
---|---|---|
電子郵件1 | 2020-12-15 20:31:18 | 產品1 |
電子郵件1 | 2020-12-15 20:32:28 | 產品1 |
電子郵件1 | 2020-12-15 20:33:48 | 產品1 |
電子郵件1 | 2020-12-15 20:34:23 | 產品1 |
電子郵件1 | 2020-12-15 20:35:10 | 產品2 |
電子郵件1 | 2020-12-15 20:35:48 | 產品2 |
電子郵件1 | 2020-12-15 20:36:09 | 產品2 |
電子郵件1 | 2020-12-15 20:37:45 | 產品2 |
電子郵件1 | 2020-12-15 20:38:10 | 產品2 |
電子郵件1 | 2020-12-15 20:39:28 | 產品3 |
我嘗試過使用 WINDOWS 函式,例如
SELECT email,
date,
product,
CASE
WHEN product='No' THEN lag(product) OVER(PARTITION BY email ORDER BY date)
WHEN product IS NULL THEN lag(product) OVER(PARTITION BY email ORDER BY date)
END AS product2
FROM table;
獲得
電子郵件 | 日期 | 產品 | 產品2 |
---|---|---|---|
電子郵件1 | 2020-12-15 20:31:18 | 產品1 | |
電子郵件1 | 2020-12-15 20:32:28 | 產品1 | |
電子郵件1 | 2020-12-15 20:33:48 | 產品1 | |
電子郵件1 | 2020-12-15 20:34:23 | 無效的 | 產品1 |
電子郵件1 | 2020-12-15 20:35:10 | 產品2 | |
電子郵件1 | 2020-12-15 20:35:48 | 產品2 | |
電子郵件1 | 2020-12-15 20:36:09 | 不 | 產品2 |
電子郵件1 | 2020-12-15 20:37:45 | 不 | 不 |
電子郵件1 | 2020-12-15 20:38:10 | 不 | 不 |
電子郵件1 | 2020-12-15 20:39:28 | 產品3 |
uj5u.com熱心網友回復:
您可以使用如下子查詢:
SELECT T.email, T.date,
(SELECT D.product FROM table_name D
WHERE D.email=T.email AND D.date<=T.date AND D.product IS NOT NULL AND D.product<>'No'
ORDER BY D.date DESC
LIMIT 1) product
FROM table_name T
ORDER BY T.email, T.date
查看演示。
uj5u.com熱心網友回復:
你所做的實際上是正確的。不過我會稍微改變一下:
SELECT
email,
date,
CASE WHEN product = 'No'
OR product IS NULL THEN
lag(product) OVER (PARTITION BY email ORDER BY date)
ELSE
product
END AS product
FROM
table_name;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/506209.html
標籤:sql 视窗 PostgreSQL 功能
上一篇:快取更新的另一種方法:雙刪策略
下一篇:用beginWithCompletionHandler替換NSOpenPanelrunModalForDirectory:的問題: