需要根据SQL中的另一个列值比较表的同一列的单元格值

时间:2017-01-21 11:15:06

标签: sql sql-server compare

我需要根据sql中另一个列值的值来比较表的列的单元格。

 Id       A      B
 1       Ram     50
 2       Ram     50
 3       Siva    123
 4       Siva    25
 5       Rose    75
 6       Rose    75
 7       Siva    123

我有上表,我需要检查A列中的Ram是否在B列中具有相同的值,如果不是,我应该返回false。

在上述情况下,它应该返回false,因为(A列)中的Siva在B列中具有不同的值。

我不知道该怎么做。请帮助。

结果预期

返回"错误",因为Siva存在价值不匹配

1 个答案:

答案 0 :(得分:2)

这是一招

select A, 
       case when min(B)=max(B) then 'True' else 'False' end as Flag
From yourtable 
Group by A

或者如果要显示每行的标志列,则

select A, 
       case when min(B)over(partition by A)=max(B)over(partition by A) then 'True' else 'False' end as Flag
From yourtable 

更新:如果您想要显示False,如果至少存在一个不匹配,那么

SELECT CASE
         WHEN EXISTS(SELECT 1
                     FROM   yourtable
                     GROUP  BY A
                     HAVING Min(B) <> Max(B)) THEN 'False'
         ELSE 'True'
       END