SQL-код запроса не запускается динамически - PullRequest
0 голосов
/ 01 мая 2018

Я хочу иметь макет сводной таблицы с верхним периодом ГГГГММ в динамической таблице. показать сумму потребления за месяц показать 1 год. но когда я попытался поместить данные (период (201801,201802 ...)) не работает с таблицей PERIOD на динамический? !!

Я не знаю, делаю ли я что-то неправильно в отчете ... может кто-нибудь помочь с этим?

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

DECLARE @ColumnNames NVARCHAR(MAX) = ' '
DECLARE @SQL NVARCHAR (MAX) = ' '
SELECT   @ColumnNames += QUOTENAME(Period) + ','
FROM     [STOKVIS LIVE].[dbo].[SR_CONS_Consumption1year]
SET @ColumnNames = LEFT (@ColumnNames,LEN(@ColumnNames)-1) 
SET @SQL = 
SELECT [No_] ,[Group],[Lakeview],[Name],[class.],[Stock], [Period]
FROM [STOKVIS LIVE].[dbo].[SR_CONS_Consumption1year]
PIVOT (
    SUM ([Qty])
    FOR [Period]
    IN( ' + @ColumnNames +   ')
    )
    as pivortable

1 Ответ

0 голосов
/ 01 мая 2018

Вы выполняете 2 запроса, которые требуют динамического синтаксиса - я не проверял, но я думаю, что вы можете попробовать что-то вроде этого:

--Declare Variables
DECLARE @ColumnNames NVARCHAR(MAX) = NULL
DECLARE @SQL NVARCHAR(MAX) 

-- First dynamic query
SET @SQL = N'
         SELECT   @ColumnNames += QUOTENAME(Period) + '',''
         FROM     [STOKVIS LIVE].[dbo].[SR_CONS_Consumption1year] ;';
--Execute dynamic query
EXEC sp_executesql @sql, N'@ColumnNames NVARCHAR(MAX)', @ColumnNames;


SET @ColumnNames = LEFT (@ColumnNames,LEN(@ColumnNames)-1) 

--second dynamic query
SET @SQL = N'

    SELECT [No_] ,[Group],[Lakeview],[Name],[class.],[Stock], [Period]
    FROM [STOKVIS LIVE].[dbo].[SR_CONS_Consumption1year]
    PIVOT (
        SUM ([Qty])
        FOR [Period]
        IN( ' + @ColumnNames +   ')
        )
        AS PivotTable ;';

EXEC sp_executesql @sql, N'@ColumnNames NVARCHAR(MAX) OUT', @ColumnNames OUT;

SELECT @TransType

EDIT В прошлом OUT добавлено EXEC для определения того, что они являются выходными переменными, поэтому вы можете использовать SELECT @TransType для получения результата

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...