如何检查这两个值是不是以 2 组的形式存在于 cell1 或 cell 2 中

Posted

技术标签:

【中文标题】如何检查这两个值是不是以 2 组的形式存在于 cell1 或 cell 2 中【英文标题】:How to check if the two values exist in either cell1 or cell 2 in groups of 2如何检查这两个值是否以 2 组的形式存在于 cell1 或 cell 2 中 【发布时间】:2020-11-11 04:03:30 【问题描述】:

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

如果两个单独的单元格(如 D2 或 D3)等于“Business”或“Compliance”,则返回 true。

如果块具有相同的值,例如单元格 D6 和 D7 中的“业务”或单元格 D10 和 D11 中的“合规性”,则代码应返回失败。

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

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;

【问题讨论】:

为什么 d6,d7 与 d2,d3 遵循不同的逻辑 结果是更大查询的一部分。我模仿我坚持的部分。需要比较两个块中的单元格。如果在两个单元格中显示“Business”或“Complinace”,则返回 true。一个由两个单元组成的块连续两次说出“Business”或“Complince”的实例失败。或者当两个单元格说出“业务”和“合规”以外的任何内容时,就会失败。这又是一个更大的查询的一部分。查询返回此结果,我有兴趣以某种模式识别“业务”和“合规”。 【参考方案1】:

试试这个:

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 组的形式存在于 cell1 或 cell 2 中的主要内容,如果未能解决你的问题,请参考以下文章

如何检查项目是不是存在于多个数组中

如何检查一个值是不是存在于Ruby中的数组中

根据以数组形式存在于对象值内的值搜索对象数组

如何检查 SQL Server CE 3.5 中是不是存在表

检查sql server ce中是不是存在项目的最佳方法?

如何检查 NSDictionary 中的值是不是存在于字典数组中