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

Откуда:
Сообщений: 122
declare @columnlist varchar(max) = stuff((select distinct ',[' + format(doc_date,'yyyyMM') + ']'   from [AOtest].[dbo].[nsk] where shop_code=N'00303НСК' and product_id=13321 order by ',[' + format(doc_date,'yyyyMM') + ']' for xml path('')),1,1,'')

declare @dispcolumnlist varchar(max) = stuff((select distinct ',[' + format(doc_date,'yyyyMM') + '] as docnum_'  + format(doc_date,'yyyyMM') from [AOtest].[dbo].[nsk] where shop_code=N'00303НСК' and product_id=13321 order by ',[' + format(doc_date,'yyyyMM') + '] as docnum_'  + format(doc_date,'yyyyMM') for xml path('')),1,1,'')
declare @dispcolumnlist2 varchar(max) = stuff((select distinct ',[' + format(doc_date,'yyyyMM') + '] as shipcount_'  + format(doc_date,'yyyyMM') from [AOtest].[dbo].[nsk] where shop_code=N'00303НСК' and product_id=13321 order by ',[' + format(doc_date,'yyyyMM') + '] as shipcount_'  + format(doc_date,'yyyyMM')  for xml path('')),1,1,'')

declare @sql varchar(max) = 'select shop_code,
product_id,' + @dispcolumnlist + ' into table1 from (select shop_code,
product_id,format(doc_date,''yyyyMM'') as monthdate,ship_count from [AOtest].[dbo].[nsk] where shop_code=N'00303НСК and product_id=13321)t pivot(sum(ship_count) for monthdate in (' + @columnlist + '))p'

exec(@sql)

select @sql = 'select shop_code,
product_id,' + @dispcolumnlist2 + ' into table2 from (select shop_code,
product_id,format(doc_date,''yyyyMM'') as monthdate,doc_num from [AOtest].[dbo].[nsk] where shop_code=N'0303НСК and product_id=13321)t pivot(count(doc_num) for monthdate in (' + @columnlist + '))p'

exec(@sql)



Выходят ошибки

Сообщение 102, уровень 15, состояние 1, строка 137
Неправильный синтаксис около конструкции "00303".
Сообщение 102, уровень 15, состояние 1, строка 143
Неправильный синтаксис около конструкции "yyyyMM".
Сообщение 137, уровень 15, состояние 2, строка 145
Необходимо объявить скалярную переменную "@sql".


Как правильно его составить?
3 фев 19, 17:21    [21800844]     Ответить | Цитировать Сообщить модератору
 Re: Почему не выполняется запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46590
Ясно, что неправильно поставлены одинарные кавычки.
Даже окраска текста запроса помогает это понять.
Может, имелось в виду это?
declare @sql varchar(max) = 'select shop_code,
product_id,' + @dispcolumnlist + ' into table1 from (select shop_code,
product_id,format(doc_date,''yyyyMM'') as monthdate,ship_count from [AOtest].[dbo].[nsk] where shop_code=N''00303НСК'' and product_id=13321)t pivot(sum(ship_count) for monthdate in (' + @columnlist + '))p'
3 фев 19, 18:00    [21800861]     Ответить | Цитировать Сообщить модератору
 Re: Почему не выполняется запрос  [new]
Kontox
Member

Откуда:
Сообщений: 122
Вроде заработало, спс
4 фев 19, 17:29    [21801466]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить