У меня есть следующий SQL:SQL сосчитать все нули в каждом столбцах во всех таблицах в таблицах SYS
SET NOCOUNT ON
DECLARE @Schema NVARCHAR(100) = 'dbo'
DECLARE @Table NVARCHAR(100) = NULL
DECLARE @sql NVARCHAR(MAX) =''
IF OBJECT_ID ('tempdb..#Nulls') IS NOT NULL DROP TABLE #Nulls
CREATE TABLE #Nulls (TableName sysname, ColumnName sysname, ColumnPosition int
, NullCount int , NonNullCount int)
SELECT @sql += 'SELECT '''+TABLE_NAME+''' AS TableName ,
'''+COLUMN_NAME+''' AS ColumnName, '''+CONVERT(VARCHAR(5),ORDINAL_POSITION)+'''AS ColumnPosition,
SUM(CASE WHEN '+COLUMN_NAME+' IS NULL THEN 1 ELSE 0 END) CountNulls ,
COUNT(' +COLUMN_NAME+') CountnonNulls FROM
'+QUOTENAME(TABLE_SCHEMA)+'.'+QUOTENAME(TABLE_NAME)+';'+ CHAR(10)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = @Schema AND (@Table IS NULL OR TABLE_NAME = @Table)
INSERT INTO #Nulls
EXEC sp_executesql @sql
SELECT *
FROM #Nulls
Это проходит через подсчет всех аннулирует так, как я ожидал. Тем не менее, я хочу использовать этот SQL, чтобы перебрать каждый таблиц в каталоге, например, в
information.schema.table
Может кто-то пожалуйста, предоставить необходимую для SQL сделать это, я совершенно невежественны с помощью курсоров.
Спасибо
'И COALESCE (@ Table, TABLE_NAME) = TABLE_NAME' или' AND NULLIF (@ Table, TABLE_NAME) = TABLE_NAME' – Hogan
Я получаю сообщение об ошибке: Msg 156, Level 15, State 1, Line 406 Неправильный синтаксис рядом с ключевое слово «Столбец». Msg 156, Level 15, State 1, Line 412 Неверный синтаксис рядом с ключевым словом «Column». – abs786123
@ abs786123 Что еще вы изменили? – scsimon