Минус функция в sql - PullRequest
       12

Минус функция в sql

0 голосов
/ 07 июня 2019
SELECT COUNT(DISTINCT CASE WHEN a.caption = 'abc' THEN a.id END) AS "Reject",
       COUNT(DISTINCT CASE WHEN b.caption ='5' THEN b.id END) AS "Dup"
FROM a with (NOLOCK) left outer join
     b re with (NOLOCK)
     On a.id= b.id   

Я хочу получить разницу обоих значений в одном и том же sql-запросе.Когда я использую функцию минус, это дает мне ошибку: типы данных varchar и varchar несовместимы в операторе вычитания.

1 Ответ

1 голос
/ 07 июня 2019

Это должно выглядеть так:

SELECT COUNT(DISTINCT CASE WHEN a.caption = 'abc' THEN a.id END) AS "Reject",
       COUNT(DISTINCT CASE WHEN b.caption ='5' THEN b.id END) AS "Dup",
       (COUNT(DISTINCT CASE WHEN a.caption = 'abc' THEN a.id END) -
        COUNT(DISTINCT CASE WHEN b.caption ='5' THEN b.id END)
       ) as diff
FROM a LEFT JOIN
     b re
     ON a.id = b.id  ; 

Не используйте WITH (NOLOCK), если вы действительно не знаете, что делаете. Вы можете получить противоречивые данные.

...