Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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查询返回结果?_Sql_Sql Server - Fatal编程技术网

当状态列发生任何更改时,如何从SQL查询返回结果?

当状态列发生任何更改时,如何从SQL查询返回结果?,sql,sql-server,Sql,Sql Server,我对编写复杂的查询还是新手。如果有人能给我任何解决这个问题的办法,我会很有帮助的 我有一组记录,当状态发生变化时,我希望它返回日期和状态 提前感谢。在SQL Server 2012+中,使用: 请回顾并感谢@sqlzim,我会了解的,这是我第一次来这里,你能解释一下吗function@Khalil根据我答案中链接的文档,lag():如果我想使用lag,我真的不明白。另外,如果我想添加'order by[Time]desc',是否有可能?@MuhammadAkmal是的,它将与order by[

我对编写复杂的查询还是新手。如果有人能给我任何解决这个问题的办法,我会很有帮助的

我有一组记录,当状态发生变化时,我希望它返回日期和状态


提前感谢。

在SQL Server 2012+中,使用:


请回顾并感谢@sqlzim,我会了解的,这是我第一次来这里,你能解释一下吗function@Khalil根据我答案中链接的文档,
lag()
:如果我想使用lag,我真的不明白。另外,如果我想添加'order by[Time]desc',是否有可能?@MuhammadAkmal是的,它将与
order by[Time]desc
一起工作如果你对
date
Time
有单独的列,那么你可以使用升序或降序,比如
(order by[date]desc,[Time]desc)
(order by[date],[时间]
。嘿,谢谢你,那会有用的!我要去看看lag()
select s.[date],s.[status]
from (
  select [date],[status],lag([status]) over (order by date) as prev_status
  from tbl
  ) s
where s.[status]<>s.prev_status 
  or s.prev_status is null
select t.[date],t.[status]
from tbl as t
outer apply (
  select top 1 i.[status] as prev_status
  from tbl as i
  where i.[date] < t.[date]
  order by i.[date] desc
  ) s
where t.[status]<>s.prev_status 
  or s.prev_status is null