Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ISNULL и ROW_NUMBER в динамическом запросе  [new]
qwertyqwer
Member

Откуда:
Сообщений: 5
Есть динамический запрос такого рода:
SET @query = 'select * into #m from (select [class],[name], [num] from #t ) as T
              Pivot(sum([num]) for [name] in (' + @c + ')) as PVT' 
SET @query = @query + ' SELECT * FROM #m'      

В переменной @c содержится список столбцов

Результат запроса:

Class                   А       B       C       D
0.00005-0.00100	        NULL	1	NULL	NULL
0.00100-0.00500	        1	NULL	NULL	NULL
0.01000-0.50000  	NULL	1	1	NULL
10.00000-50.00000	NULL	2	NULL	1


Теперь нужно значения NULL заменить нулями и пронумеровать строки.

В связи с этим вопрос: можно ли вытащить из динамического запроса таблицу #m?
или как применить ISNULL, ROW_NUMBER в динамическом запросе к таблице #m?
таблице #m состоит из столбца Class и столбцов, имена которых хранятся в переменной @c
14 сен 15, 09:37    [18145322]     Ответить | Цитировать Сообщить модератору
 Re: ISNULL и ROW_NUMBER в динамическом запросе  [new]
invm
Member

Откуда: Москва
Сообщений: 9646
qwertyqwer
В связи с этим вопрос: можно ли вытащить из динамического запроса таблицу #m?
Нельзя.
qwertyqwer
как применить ISNULL, ROW_NUMBER в динамическом запросе к таблице #m?
Что мешает из списка столбцов 'A, B, C, D' сформировать список 'isnull(A, 0) as A, isnull(B, 0) as B, isnull(C, 0) as C, isnull(D, 0) as D' и применить его вместо *?
14 сен 15, 10:16    [18145397]     Ответить | Цитировать Сообщить модератору
 Re: ISNULL и ROW_NUMBER в динамическом запросе  [new]
qwertyqwer
Member

Откуда:
Сообщений: 5
invm
qwertyqwer
В связи с этим вопрос: можно ли вытащить из динамического запроса таблицу #m?
Нельзя.
qwertyqwer
как применить ISNULL, ROW_NUMBER в динамическом запросе к таблице #m?
Что мешает из списка столбцов 'A, B, C, D' сформировать список 'isnull(A, 0) as A, isnull(B, 0) as B, isnull(C, 0) as C, isnull(D, 0) as D' и применить его вместо *?


О, спасибо огромное, заработало :)
14 сен 15, 11:33    [18145776]     Ответить | Цитировать Сообщить модератору
 Re: ISNULL и ROW_NUMBER в динамическом запросе  [new]
Макбет
Member

Откуда:
Сообщений: 72
invm
qwertyqwer
В связи с этим вопрос: можно ли вытащить из динамического запроса таблицу #m?
Нельзя.

Не совсем верно
вытащить нельзя, зато можно создать вручную и в динамическом запросе записать в нее данные
CREATE TABLE #RESULT(A int null, B int null, C int null, D int null)

SET @query = 'INSERT INTO #RESULT(A, B, C, D)
select isnull(A,0) A, isnull(B,0) B, isnull(C,0) C, isnull(D,0) D
from ...' 

exec (@query)

select * from #RESULT
14 сен 15, 11:51    [18145895]     Ответить | Цитировать Сообщить модератору
 Re: ISNULL и ROW_NUMBER в динамическом запросе  [new]
invm
Member

Откуда: Москва
Сообщений: 9646
Макбет
зато можно создать вручную и в динамическом запросе записать в нее данные
И это будет уже не "таблица #m из динамического запроса", в терминах ТС.
14 сен 15, 12:02    [18145969]     Ответить | Цитировать Сообщить модератору
 Re: ISNULL и ROW_NUMBER в динамическом запросе  [new]
Макбет
Member

Откуда:
Сообщений: 72
invm,

согласен, проглядел
14 сен 15, 13:42    [18146611]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить