我有一个数据集,看起来像:
ID date emp_num loc
1111 5/2/16 111111 Brooklyn
1112 5/3/16 222222 Detroit
1113 5/3/16 333333 San Diego
1114 5/2/16 333333 Orlando
1115 5/5/16 333333 Brooklyn
1116 5/7/16 111111 Orlando
在这种情况下,我要返回记录1113、1114和1115,因为连续行中的emp_num(按ID排序)是相同的。
我使用Teradata,但是如果有人对另一个引擎有SQL解决方案,那么我通常可以设法对其进行翻译。
谢谢你。
您需要查看上一行/下一行,并检查它是否保持不变:
SELECT *
FROM tab
QUALIFY
MIN(emp_num) --previous row
OVER (ORDER BY ID
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) = emp_num
OR
MIN(emp_num) -- next row
OVER (ORDER BY ID
ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) = emp_num
在Standard SQL中,这是LAG
/的任务LEAD
,但Teradata不会强制执行,因此您必须重写它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句