如何比较SQL Server中的两行

如何比较SQL Server中的两行,sql,sql-server,Sql,Sql Server,我习惯于mysql,当你可以毫无问题地做到这一点时。我想在SQLServer中运行以下语句,但是它没有看到列C_计数 SQL Server不允许在WHERE子句中使用别名。你必须有这样的东西: SELECT *, Customers - C_COUNT "Difference" FROM ( SELECT A.customers AS CUSTOMERS, (SELECT COUNT(ID) FROM Partners_customers B WHERE

我习惯于mysql,当你可以毫无问题地做到这一点时。我想在SQLServer中运行以下语句,但是它没有看到列C_计数


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]
或者,更好的方法是消除内联计数:

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)

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]
或者,更好的方法是消除内联计数:

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)

完全未经测试

(select * from TabA 
 minus
 select * from TabB) -- Rows in TabA not in TabB
union all
( 
 select * from TabB 
 minus
 select * from TabA
) -- rows in TabB not in TabA

完全未经测试

(select * from TabA 
 minus
 select * from TabB) -- Rows in TabA not in TabB
union all
( 
 select * from TabB 
 minus
 select * from TabA
) -- rows in TabB not in TabA

或者:复制/粘贴相关子查询。或者:复制/粘贴相关子查询。