gpt4 book ai didi

sql - Oracle SQL LAG() 函数导致重复行

转载 作者:行者123 更新时间:2023-12-03 08:19:50 24 4
gpt4 key购买 nike

我有一个非常简单的查询,结果是两行:

SELECT DISTINCT
id,
trunc(start_date) start_date
FROM example.table
WHERE ID = 1

这会产生以下行:

id    start_date
1 7/1/2012
1 9/1/2016

我想添加一列,仅显示每行的前一个日期。所以我使用以下内容:

SELECT DISTINCT id,
Trunc(start_date) start_date,
Lag(start_date, 1)
over (
ORDER BY start_date) pdate
FROM example.table
WHERE id = 1

但是,当我这样做时,我得到四行而不是两行:

id    start_date    pdate
1 7/1/2012 NULL
1 7/1/2012 7/1/2012
1 9/1/2016 7/1/2012
1 9/1/2016 9/1/2012

如果我将偏移量更改为 2 或 3,结果保持不变。如果我将偏移量更改为 0,我会再次得到两行,但当然现在 start_date == pdate。

我不知道发生了什么

最佳答案

改用显式的GROUP BY:

SELECT id, trunc(start_date) as start_date,
LAG(trunc(start_date)) OVER (PARTITION BY id ORDER BY trunc(start_date))
FROM example.table
WHERE ID = 1
GROUP BY id, trunc(start_date)

关于sql - Oracle SQL LAG() 函数导致重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68184896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com