sql 中的负函数

Minus function in sql

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 在减法运算符中不兼容。

它应该是这样的:

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)。您可能会得到不一致的数据。