34,594
社区成员
发帖
与我相关
我的任务
分享
;WITH cte AS
(
SELECT id,aa,bb,rn=ROW_NUMBER() OVER(PARTITION BY bb ORDER BY aa DESC) FROM @t
WHERE BB = 'GZ'
)
SELECT * FROM cte t
WHERE EXISTS(SELECT 1 FROM cte t1 WHERE t.rn=t1.rn+1 AND t.aa=t1.aa-2)
OR EXISTS(SELECT 1 FROM cte t1 WHERE t.rn+1=t1.rn AND t.aa-2=t1.aa)
DECLARE @t TABLE(id INT,aa INT,bb VARCHAR(20))
INSERT INTO @t
( id, aa, bb )
SELECT 1, 15, 'GZ' UNION ALL SELECT
2, 14, 'AZ' UNION ALL SELECT
3, 13, 'CZ' UNION ALL SELECT
4, 13, 'GZ' UNION ALL SELECT
6, 10, 'TZ' UNION ALL SELECT
7, 12, 'GZ' UNION ALL SELECT
8, 11, 'BZ' UNION ALL SELECT
9, 10, 'GZ'
;WITH cte AS
(
SELECT id,aa,bb,rn=ROW_NUMBER() OVER(PARTITION BY bb ORDER BY aa DESC) FROM @t
WHERE BB = 'GZ'
)
SELECT * FROM cte t
WHERE EXISTS(SELECT 1 FROM cte t1 WHERE t.rn=t1.rn+1 AND t.aa=t1.aa-2)
OR EXISTS(SELECT 1 FROM cte t1 WHERE t.rn+1=t1.rn AND t.aa-2=t1.aa)