我需要一种方法来比较两个块中的单元格。需要比较D2与D3,D4与D5…D10对抗D11。
如果像D2或D3这样的两个单独的单元格等于“业务”或“遵从性”,则返回true。
如果一个块具有相同的值,如单元格D6 & D7中的“业务”或单元格D10 & D11中的“遵从性”,则代码应返回fail。

我正在尝试使用此代码的一个变体,但我无法使其正常工作。
create table data
(
ID int,
[Col A] nvarchar(10),
[Col B] nvarchar(10),
[Col C] nvarchar(10)
);
insert into data (ID, [Col C]) values
(1, 'Business'),
(2, 'Compliance'),
(3, 'Compliance'),
(4, 'Business'),
(5, 'Business'),
(6, 'Business'),
(7, 'Compliance'),
(8, 'Compliance'),
(9,'Business'),
(10,'Marketing');
select d.ID,
d.[Col C],
case
when d.[Col C] <> coalesce(lag(d.[Col C]) over(order by d.ID), '') then 'Ok'
when d.[Col C] <> coalesce(lead(d.[Col C]) over(order by d.ID), '') then 'Ok'
end as B
from data d
order by d.ID;发布于 2020-11-11 14:08:18
试试这个:
SELECT *
,CASE
WHEN [ID] % 2 = 1 AND [Col C] = 'Business' AND LEAD([Col C]) OVER(ORDER BY [ID]) = 'Compliance' THEN 'OK'
WHEN [ID] % 2 = 1 AND [Col C] = 'Compliance' AND LEAD([Col C]) OVER(ORDER BY [ID]) = 'Business' THEN 'OK'
WHEN [ID] % 2 = 0 AND [Col C] = 'Business' AND LAG([Col C]) OVER(ORDER BY [ID])= 'Compliance' THEN 'OK'
WHEN [ID] % 2 = 0 AND [Col C] = 'Compliance' AND LAG([Col C]) OVER(ORDER BY [ID])= 'Business' THEN 'OK'
ELSE 'Fail'
END AS [Result]
FROM [dbo].[data];

我使用[ID] % 2检查我是否对下一个值(对于1,2,5,etc)或前一个值(对于2,4,6,etc)感兴趣。
https://stackoverflow.com/questions/64780310
复制相似问题