提问人:Adele 提问时间:11/15/2023 最后编辑:marc_sAdele 更新时间:11/16/2023 访问量:65
两个查询之间的 SQL Server 区别?
SQL Server difference between two queries?
问:
这是我的表格:
我有一个问题,我不明白以下两个查询之间的区别:
查询 #1:
SELECT
productID,
SUM(soldQty)
FROM
Sales
WHERE
soldQty <> 0
GROUP BY
ProductID
查询 #2:
SELECT
productID,
SUM(soldQty)
FROM
Sales
GROUP BY
ProductID
HAVING
SUM(soldQty) <> 0
哪些将导致查询?不是一样吗?productID
答:
3赞
Thom A
11/15/2023
#1
查询是不一样的。第一个查询将 的值不等于 的行。SUM
soldQty
0
但是,第二个查询将返回 中值的总和
不合计的行。因此,如果值为 ,例如 ,则这些行将被省略。对于第一个查询,情况并非如此。soldQty
0
SUM
0
10
-4
-6
SELECT MyColumn,
SUM(IntColumn) AS TotalIntColumn
FROM (VALUES(1,0),
(1,2),
(1,5),
(1,0),
(1,-2),
(2,10),
(2,-4),
(2,-6),
(2,0),
(3,0))V(MyColumn,IntColumn)
WHERE IntColumn <> 0
GROUP BY MyColumn;
SELECT MyColumn,
SUM(IntColumn) AS TotalIntColumn
FROM (VALUES(1,0),
(1,2),
(1,5),
(1,0),
(1,-2),
(2,10),
(2,-4),
(2,-6),
(2,0),
(3,0))V(MyColumn,IntColumn)
GROUP BY MyColumn
HAVING SUM(IntColumn) <> 0;
请注意,在第一个数据集中返回,值为 for ,但在第二个数据集中不返回。两个结果集都不会返回值为 for as 的行,仅包含值 。2
0
TotalIntColumn
3
MyColumn
IntColumn
0
0赞
Ross Bush
11/15/2023
#2
查询 1 将省略 soldQty <> 0 的所有记录,无论 productid 如何
查询 2 将省略与累计总和 soldQty <> 0 的所有产品关联的所有记录
评论
SoldQty = -1