SQL SERVER - Узнайте, какое поле отличается - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть 2 записи из таблицы фруктов ниже.Я использую оператор EXCEPT для сравнения. Обратите внимание, что поле идентификатора игнорируется:

ID  Fruit    AmountToday
1    Apple     10
2    Apple     20

Мой SQL выглядит следующим образом:

SELECT FRUIT,AMOUNTTODAY FROM FRUITS WHERE ID='1'
EXCEPT
SELECT FRUIT,AMOUNTTODAY FROM FRUITS WHERE ID='2'

В настоящее время возвращается вся запись, ноЯ хочу напечатать имя поля, которое отличается - например, AMOUNTTODAY.

Кто-нибудь знает, как этого можно достичь?

1 Ответ

0 голосов
/ 26 ноября 2018

Вот оператор Case для опроса интересующих вас полей:
Используется первая запись в вашей таблице для сравнения с остальными записями.Он подсчитывает разницу для [Fruit] и [AmountToday].

With t As
(
SELECT  
  Case When Fruit <> (Select Top 1 Fruit From Fruits) Then 1 Else 0 End As FruitDiff,
  Case When AmountToday <> (Select Top 1 AmountToday From Fruits) Then 1 Else 0 End As AmtDiff
FROM FRUITS 
)
Select 
Sum(FruitDiff) As FruitDiffs,
Sum(AmtDiff) As AmtDiffs
From t

Результат:

FruitDiffs  AmtDiffs

0             1
...