我需要一种方法来比较两个的块中的单元格。需要比较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, 'Business'),
(9,'Compliance'),
(10,'Compliance');
select d.ID,
d.[Col C],
case when ( d.[Col C] = coalesce(lag(d.[Col C]) over(order by d.ID), '')
and d.[Col C] = coalesce(lead(d.[Col C]) over(order by d.ID), '') ) then 'FAIL'
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 11:01:06
使用窗口函数比较组中的行:
select d.*,
(case when min(c) over (partition by (id - 1) / 2) = max(c) over (partition by (id - 1) / 2)
then 'fail' else 'ok'
end)
from data dHere是一个db<>fiddle。
注意:这假设id没有间隙。如果是这样,您可以使用row_number()来计算序列。
https://stackoverflow.com/questions/64779770
复制相似问题