Поделиться через


CHECKSUM_AGG (Transact-SQL)

Возвращает контрольную сумму значений в группе. Значения NULL не учитываются. За функцией может следовать предложение OVER.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

CHECKSUM_AGG ( [ ALL | DISTINCT ] expression )

Аргументы

  • ALL
    Применяет агрегатную функцию ко всем значениям. ALL является аргументом по умолчанию.

  • DISTINCT
    Указывает, что CHECKSUM_AGG возвращает контрольную сумму уникальных значений.

  • expression
    Является целочисленным выражением. Агрегатные функции и вложенные запросы недопустимы.

Типы возвращаемых данных

Возвращает контрольную сумму всех значений expression как int.

Замечания

Функция CHECKSUM_AGG может использоваться для обнаружения изменений в таблице.

Порядок строк в таблице не влияет на результат функции CHECKSUM_AGG. Кроме того, функции CHECKSUM_AGG могут использоваться с ключевым словом DISTINCT и предложением GROUP BY.

Если одно из значений в списке выражений меняется, то обычно меняется и контрольная сумма этого списка. Однако есть небольшая вероятность того, что контрольная сумма не изменится.

Действие функции CHECKSUM_AGG аналогично действию других агрегатных функций. Дополнительные сведения см. в разделе Агрегатные функции (Transact-SQL).

Примеры

В следующем примере функция CHECKSUM_AGG используется для обнаружения изменений в столбце Quantity таблицы ProductInventory в базе данных AdventureWorks.

--Get the checksum value before the column value is changed.
USE AdventureWorks2012;
GO
SELECT CHECKSUM_AGG(CAST(Quantity AS int))
FROM Production.ProductInventory;
GO

Ниже приводится результирующий набор.

------------------------
262

UPDATE Production.ProductInventory 
SET Quantity=125
WHERE Quantity=100;
GO
--Get the checksum of the modified column.
SELECT CHECKSUM_AGG(CAST(Quantity AS int))
FROM Production.ProductInventory;

Ниже приводится результирующий набор.

------------------------
287

См. также

Справочник

CHECKSUM (Transact-SQL)

Предложение OVER (Transact-SQL)