如何比较SQL Server中的两行

use*_*829 0 sql sql-server

我已经习惯了mysql,你可以毫无问题地做到这一点.我想在SQL Server中运行以下语句,但它没有看到该列C_COUNT.

SELECT 
   A.customers AS CUSTOMERS, 
  (SELECT COUNT(ID) FROM Partners_customers B WHERE A.ID = B.PIID) AS C_COUNT 
FROM Partners A
WHERE CUSTOMERS <> [C_COUNT]
Run Code Online (Sandbox Code Playgroud)

是否有可能利用该SELECT地区的任何数学运算

SELECT (CUSTOMERS - C_COUNT) AS DIFFERENCE 
Run Code Online (Sandbox Code Playgroud)

Adr*_*iro 5

SQL Server不允许您在WHERE子句中使用别名.你必须得到这样的东西:

SELECT *, Customers - C_COUNT "Difference"
FROM  (
    SELECT 
    A.customers AS CUSTOMERS, 
    (SELECT COUNT(ID) 
    FROM Partners_customers B WHERE A.ID = B.PIID) 
    AS C_COUNT FROM Partners A
) t
WHERE CUSTOMERS <> [C_COUNT]
Run Code Online (Sandbox Code Playgroud)

或者,更好的是,消除内联计数:

select A.customers, count(b.id)
FROM Partners A
LEFT JOIN Partners_customers B ON A.ID = B.PIID
Group By A.ID
having a.customers <> count(b.id)
Run Code Online (Sandbox Code Playgroud)