似乎有许多条件会导致CHECKSUM_AGG
返回 0,这是我没有预料到的。我只能找到一个讨论过的问题,即重复值会导致它。这可以通过 aDISTINCT
或来解决GROUP BY
。
我还发现了一些对我来说意义不大的场景。一个是我老板提供的,一个是我找到的MSDN。这些我不知道怎么解释。下面是一些演示场景的 SQL:
SELECT
CHECKSUM_AGG(T.Number) AS ChecksumAgggregate
FROM
(
VALUES
(2)
, (3)
, (4)
, (5)
)AS T(Number)
DECLARE @t TABLE
(
Category VARCHAR(15),
Value VARCHAR(10)
)
INSERT @t
(
Category
, Value
)
VALUES
('OneCharacter','a')
,('OneCharacter','b')
,('OneCharacter','c')
,('OneCharacter','d')
,('TwoCharacters','aa')
,('TwoCharacters','bb')
,('TwoCharacters','cc')
,('TwoCharacters','dd')
,('ThreeCharacters','aaa')
,('ThreeCharacters','bbb')
,('ThreeCharacters','ccc')
,('ThreeCharacters','ddd')
,('SixCharacters','aaaaaa')
,('SixCharacters','bbbbbb')
,('SixCharacters','cccccc')
,('SixCharacters','dddddd')
,('AllValues','a')
,('AllValues','b')
,('AllValues','c')
,('AllValues','d')
,('AllValues','aa')
,('AllValues','bb')
,('AllValues','cc')
,('AllValues','dd')
,('AllValues','aaa')
,('AllValues','bbb')
,('AllValues','ccc')
,('AllValues','ddd')
,('AllValues','aaaaaa')
,('AllValues','bbbbbb')
,('AllValues','cccccc')
,('AllValues','dddddd')
select
Category, CHECKSUM_AGG(CHECKSUM(Value))
from @t
group by Category
select Category, Value, CHECKSUM(Value) ValueChecksum
from @t
CHECKSUM_AGG
在来自这些查询的这些示例中,它只不过是 0 。最后一个查询显示没有任何CHECKSUM
输入到CHECKSUM_AGG
调用中的值是重复的。
我希望任何描述CHECKSUM_AGG
返回 0 的原因的答案也能解释这些情况。