Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server仅检查以前的记录_Sql_Sql Server_Record - Fatal编程技术网

SQL Server仅检查以前的记录

SQL Server仅检查以前的记录,sql,sql-server,record,Sql,Sql Server,Record,我有以下列:type(char)、date、price。 我想检查一下同一型号的价格在以前的记录中是否没有变化 我尝试了这个开始: SELECT * FROM table t1, table t2 WHERE t1.date > t2.date and t1.type = t2.type 我只想检查之前的日期,而不是每个较小的日期 此表存储价格变化 产品类型 更改日期 价格 “A” 2020.02.18 500 “A” 2020.02.20 750 “A” 2020.02.22 800

我有以下列:type(char)、date、price。 我想检查一下同一型号的价格在以前的记录中是否没有变化

我尝试了这个开始:

SELECT *
FROM table t1, table t2
WHERE t1.date > t2.date and t1.type = t2.type
我只想检查之前的日期,而不是每个较小的日期

此表存储价格变化

产品类型 更改日期 价格 “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 试试这个:

select 
    t.*, 
    lag(price) over(partition by type order by date) as previous_price 
from table t

请提供示例数据、所需结果和适当的数据库标记。如果您只想检查一个最近的先前数据而不是所有先前数据,我认为您可以使用
lag()
lead()
。但是我强烈建议不要使用
date
type
作为列名,特别是那些保留关键字,最好只添加一些前缀,如:
table\u date
。是否可以使用自联接来实现这一点?90年代的人称之为-他们希望恢复旧式联接。那么,我如何筛选price=previous_price呢?@Panke将上面的整个查询放在一个子查询中,然后从中进行选择。例如,如果我们将上面的查询标记为X(为了可读性),那么选择*from(X),其中price=previous\u price将稍后试用,谢谢您的回答!