sql - 如果值更改,则返回行
解决方案
你想用lag()
. 我认为这是正确的逻辑:
select *
from (select t.*,
lag(prd) over (partition by locid order by fileid) as prev_prd
from t
) t
where (prd <> prev_prd) or
(prev_prd is null and prd is not null) or
(prev_prd is not null and prd is null);
SQL Server 没有NULL
-safe 比较,因此NULL
s 使比较逻辑稍微复杂一些。
这假定这fileid
是行的排序。如果不是这种情况,则order by
需要是指定排序的列。
推荐阅读
- python - 用python重命名文件夹中的所有文件
- cypress - 重复命令
- r - 如何在 R 上的强度图中表示断口分析
- excel - Excel VBA 转置 1 个工作簿中的范围,然后将值传输到第 2 个工作簿追加到末尾
- git - $ git log --decorate --oneline --graph 一个遥控器?
- python - 将 Flask 应用程序部署到 Windows Azure 并收到 wfastcgi 错误
- c - 数组 c 编程中的随机探索
- php - PHP Query POST foreach 仅显示表单中 80 个选项中的 77 个
- java - 与 Maven 的子模块依赖关系
- r - 拒绝一个值 w/oa for 循环