繁体   English   中英

如何在SQL Server中比较两行

[英]How to compare two rows in 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]

是否可以利用SELECT区域中的任何数学运算,例如

SELECT (CUSTOMERS - C_COUNT) AS DIFFERENCE 

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)
WITH A AS
(
    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]
)
SELECT 
    *, 
    (CUSTOMERS - C_COUNT) AS DIFFERENCE 
FROM A 

完全未经测试。

(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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM