2017-01-21 5 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», так как есть несовпадение значение для Шивой

ответ

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 
+0

Спасибо :). Мне нужно отобразить одно сообщение, если есть несоответствие, моя таблица может содержать около 500 строк, поэтому не нужно отображать для каждой строки. Возможно ли это? – Kumar

+0

@ Кумар. Я не понимаю. Вы просто хотите напечатать 'false', если хотя бы один' A' имеет 'false' или что? –

+0

Да, мне просто нужно сравнить, имеют ли все значения B одинаковое значение на основе значения A. В приведенном выше случае несоответствие для отдыха Siva имеет одинаковые значения. Поэтому мне нужно напечатать false. – Kumar

Смежные вопросы