【问题标题】:Need to compare the cell values of same column of a table based on another column value in SQL需要根据 SQL 中的另一列值比较表中同一列的单元格值
【发布时间】:2017-01-21 11:15:06
【问题描述】:

我需要根据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 列中有不同的值。

我不知道该怎么做。请提供同样的帮助。

预期结果

返回“False”,因为 Siva 的值不匹配

【问题讨论】:

    标签: sql sql-server compare


    【解决方案1】:

    这里有一个技巧

    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 
    

    【讨论】:

    • 谢谢:)。如果不匹配,我需要显示一条消息,我的表格可能包含大约 500 行,所以不想为每一行显示。有可能吗?
    • @Kumar - 我不明白。如果至少有一个Afalse 或什么,您只想打印false
    • 是的,我只需要根据 A 的值比较 B 的所有值是否具有相同的值。在上述情况下,Siva 其余的值不匹配。所以我需要打印错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 2022-11-14
    • 2021-09-07
    • 2014-03-23
    相关资源
    最近更新 更多