2017-01-21 9 views
2

sqlの別の列値の値に基づいてテーブルの列のセルを比較する必要があります。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 

私は上記の表を持って、私はfalseを返す必要がありますされていない場合列A内のRAMには、列Bに同じ値を持っているかどうかを確認する必要があります。

上記の場合、それは(カラムA)にシヴァとしてfalseを返す必要がありますが、私はこれを行う方法がわからない列B.

で異なる値を持っています。親切にも同じことを助けてください。シヴァ

答えて

2

の値の不一致がここにありますように、

戻る「false」に期待

結果は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 

更新:少なくとも1つの不一致が存在する場合、Falseを表示したい場合は、

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

ありがとうございます。不一致がある場合は1つのメッセージを表示する必要があります。テーブルには約500行が含まれている可能性があるため、各行に表示する必要はありません。 – Kumar

+0

@クマール - 私はそれを取得しません。少なくとも1つの 'A'が' false'か何かをしている場合は 'false'を出力したいだけです。 –

+0

ええ、私はちょうどBのすべての値がAの値に基づいて同じ値を持っているかどうかを比較する必要があります上記の場合、Siva残りのための不一致が同じ値を持っているので、私はfalseを印刷する必要があります。 – Kumar

関連する問題