我有一个使用此DML语句的问题
SELECT SupplierID, COUNT(*) AS TotalProducts
FROM Products
GROUP BY SupplierID;
我试图在不使用" Group By"的情况下获得相同的结果。我可以使用表变量或临时表,如果需要可以使用Insert和Update。此外,允许使用While和IF-Else。
我真的失去了任何帮助都会很棒。谢谢SO社区。
这在SQL Server中使用。再次感谢。
答案 0 :(得分:6)
您可以随时使用SELECT DISTINCT
窗口函数:
SELECT DISTINCT SupplierID,
COUNT(*) OVER (PARTITION BY SupplierId) AS TotalProducts
FROM Products;
但是GROUP BY
是编写聚合查询的正确方法。
答案 1 :(得分:3)
您也可以使用以下查询:
select distinct P.SupplierID, (select count(*) from Products
where SupplierID=P.SupplierID) TotalProducts from Products P
使用上述查询您会得到相同的结果,但我不认为避免GROUP BY
是个好主意!
答案 2 :(得分:2)
使用子查询:
SELECT DISTINCT SupplierID
,(SELECT COUNT(*)
FROM Products P2
WHERE P2.SupplierID = P.SupplierID
) AS TotalProducts
FROM Products P
不同之处在于删除重复项......计数会针对每一行执行,因此如果没有区别,您将获得supplierID的重复答案。
答案 3 :(得分:1)
另一种方式
select distinct supplierId, p2.ttl
from products p1
cross apply
(
select count(*)
from products p2
where p1.supplierId = p2.supplierId
) p2(ttl);