SQL 服务器只检查之前的记录
SQL Server check for prior record only
我有这些列:类型(字符)、日期、价格。
我想看看同类型的价格在之前的记录中是否没有变化
我一开始试过这个:
SELECT *
FROM table t1, table t2
WHERE t1.date > t2.date and t1.type = t2.type
我只想检查之前的日期,而不是每个更小的日期。
这 table 存储价格变化。
product_type
change_date
price
'A'
2020.02.18
500
'A'
2020.02.20
750
'A'
2020.02.22
800
'B'
2020.02.22
500
'B'
2020.02.27
900
'C'
2020.02.22
400
'C'
2020.02.29
700
我想把这个table放在自己旁边,看看价格是否保持不变:
product_type
change_date
price
product_type
change_date
price
'A'
2020.02.20
750
'A'
2020.02.18
500
'A'
2020.02.22
800
'A'
2020.02.20
750
'B'
2020.02.27
900
'B'
2020.02.22
500
'C'
2020.02.29
700
'C'
2020.02.22
400
我只想显示没有显示价格变化的行,所以 price = previous price
。
试试这个:
select
t.*,
lag(price) over(partition by type order by date) as previous_price
from table t
我有这些列:类型(字符)、日期、价格。 我想看看同类型的价格在之前的记录中是否没有变化
我一开始试过这个:
SELECT *
FROM table t1, table t2
WHERE t1.date > t2.date and t1.type = t2.type
我只想检查之前的日期,而不是每个更小的日期。
这 table 存储价格变化。
product_type | change_date | price |
---|---|---|
'A' | 2020.02.18 | 500 |
'A' | 2020.02.20 | 750 |
'A' | 2020.02.22 | 800 |
'B' | 2020.02.22 | 500 |
'B' | 2020.02.27 | 900 |
'C' | 2020.02.22 | 400 |
'C' | 2020.02.29 | 700 |
我想把这个table放在自己旁边,看看价格是否保持不变:
product_type | change_date | price | product_type | change_date | price |
---|---|---|---|---|---|
'A' | 2020.02.20 | 750 | 'A' | 2020.02.18 | 500 |
'A' | 2020.02.22 | 800 | 'A' | 2020.02.20 | 750 |
'B' | 2020.02.27 | 900 | 'B' | 2020.02.22 | 500 |
'C' | 2020.02.29 | 700 | 'C' | 2020.02.22 | 400 |
我只想显示没有显示价格变化的行,所以 price = previous price
。
试试这个:
select
t.*,
lag(price) over(partition by type order by date) as previous_price
from table t