首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查这两个值是否存在于2个组中的cell1或单元格2中

如何检查这两个值是否存在于2个组中的cell1或单元格2中
EN

Stack Overflow用户
提问于 2020-11-11 12:03:31
回答 1查看 33关注 0票数 0

我需要一种方法来比较两个块中的单元格。需要比较D2与D3,D4与D5…D10对抗D11。

如果像D2或D3这样的两个单独的单元格等于“业务”或“遵从性”,则返回true。

如果一个块具有相同的值,如单元格D6 & D7中的“业务”或单元格D10 & D11中的“遵从性”,则代码应返回fail。

我正在尝试使用此代码的一个变体,但我无法使其正常工作。

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-11 14:08:18

试试这个:

代码语言:javascript
复制
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)感兴趣。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64780310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档