我有一个程序可以计算所有唯一的 [customerid] 值并将它们显示在 SELECT 列表中。我正在尝试使用 HAVING 子句对 [customerid] 进行排序,其中它只有“> 1”,但 SQL 不允许我在 HAVING 中使用 DISTINCT COUNT。在我看来,HAVING 应该与 COUNT 一起使用是有道理的,但它没有:
USE MyCompany;
GO
SELECT DISTINCT COUNT(customerid) AS NumberOfOrdersMade, customerid AS
CustomerID
FROM tblItems_Ordered
GROUP BY customerid
HAVING DISTINCT COUNT(customerid) > 1
GO
Run Code Online (Sandbox Code Playgroud)
你可能想要SELECT COUNT(DISTINCT orderid)而不是DISTINCT COUNT(customerid):
USE MyCompany;
GO
SELECT COUNT(DISTINCT orderid) AS NumberOfOrdersMade, customerid AS
CustomerID
FROM tblItems_Ordered
GROUP BY customerid
HAVING COUNT(DISTINCT orderid) > 1
GO
Run Code Online (Sandbox Code Playgroud)
在 之外时COUNT,DISTINCT将消除结果集中的重复行,这对您的查询没有影响,因为您正在执行GROUP BY. 在 , 中时COUNT,DISTINCT会将计数限制为您传递给 count 函数的列的唯一值。因此,当您将其别名为 NumberOfOrdersMade 时,使用orderid列而不是 customerid更有意义。
| 归档时间: |
|
| 查看次数: |
15050 次 |
| 最近记录: |