【发布时间】:2012-08-13 05:33:21
【问题描述】:
似乎有许多条件会导致CHECKSUM_AGG 返回我没有预料到的 0。我只能找到一个讨论过的问题,即重复值会导致它。这可以通过DISTINCT 或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_AGG 调用中的CHECKSUM 值没有一个重复。
我希望任何描述导致 CHECKSUM_AGG 返回 0 的原因的答案也能解释这些情况。
【问题讨论】:
标签: sql sql-server tsql sql-server-2008-r2 checksum