首页 > 解决方案 > 检查从第二个位置开始的另一列值中是否存在列值sql server

问题描述

我写信是为了检查特定列的第一行值是否等于另一列的第二行值。

例子:

在此处输入图像描述

在上面的示例中,对于订单 S1,我正在寻找第一个产品密钥“2”,以便使用第二行中的 ParentProductKey 检查。

如果匹配,则为“是”,否则为“否”。

此外,如果产品密钥匹配 2,3 和 4(通常是其余的),那么第一行也应该是“是”。

如何做到这一点?

标签: sqlsql-serversql-server-2008

解决方案


你似乎想要APPLY

SELECT t.*, (CASE WHEN t.ProductKey = t1.ParentProductKey THEN 'Yes' ELSE 'No' END) AS Result
FROM table t OUTER APPLY
     ( SELECT TOP (1) t1.*
       FROM table t1
       WHERE t1.sid = t.sid and t1.ProductKey > t.ProductKety
       ORDER BY t1.ProductKey 
     ) t1;

推荐阅读