Я хотел бы обработать результаты динамического центра, который приводит к переменным количествам столбцов данных с разными именами.Но они содержат данные, связанные друг с другом, и имеют один и тот же тип данных.Для каждого столбца результата я хотел бы применить идентичную функцию ISNULL
.Но так как я не знаю имен столбцов, запись операции столбец за столбцом невозможна.
Вот SQL Fiddle .И пример таблицы:
CREATE TABLE T (ID INT UNIQUE NOT NULL, C1 INT NULL, C2 INT NULL, C3 INT NULL);
INSERT INTO T VALUES
(0, NULL, NULL, NULL),
(1, 9, NULL, NULL),
(2, NULL, 8, NULL),
(3, NULL, NULL, 10),
(4, 12, 61, NULL),
(5, 36, NULL, 86),
(6, NULL, 77, 42),
(7, 11, 22, 33);
SELECT * FROM T;
ID | C1 | C2 | C3
----+------+------+-----
0 | NULL | NULL | NULL
1 | 9 | NULL | NULL
2 | NULL | 8 | NULL
3 | NULL | NULL | 10
4 | 12 | 61 | NULL
5 | 36 | NULL | 86
6 | NULL | 77 | 42
7 | 11 | 22 | 33
Затем будет применяться ISNULL(CN, 0)
для каждого из этих столбцов.Как это может быть достигнуто?Если это имеет какое-либо значение, так как сводный запрос является динамическим, эта обработка будет выполняться внутри EXEC sp_executesql
.
Ожидаемый результат будет:
ID | C1 | C2 | C3
----+------+------+-----
0 | 0 | 0 | 0
1 | 9 | 0 | 0
2 | 0 | 8 | 0
3 | 0 | 0 | 10
4 | 12 | 61 | 0
5 | 36 | 0 | 86
6 | 0 | 77 | 42
7 | 11 | 22 | 33