Как я могу создать хранимую процедуру, чтобы получить столбцы в ssrs из даты динамической c сводки с временной таблицей logi c? - PullRequest
0 голосов
/ 10 февраля 2020

Я попробовал приведенный ниже код и получил желаемые результаты. Но я не знаю, как создать хранимую процедуру из кода. Код содержит временную таблицу для получения столбцов в наборе данных SSRS.


        select  odf.DEFINITION_NAME as Notice,
                    r_account_type.desc_short as AccountType,
                    orq.notice_dt as Dt,
                    orq.context_type as contextType,
                    orq.context_id as contextID
                    into #table
                from 
                        oc_request orq 
                        inner join oc_document odc on orq.OC_REQUEST_ID = odc.oc_request_id 
                        inner join oc_definition odf on odf.OC_DEFINITION_ID = orq.OC_DEFINITION_ID
                        inner join Users u on u.user_id = orq.requestor

                        ----Account Context
                left join its_account on its_account.account_key = orq.CONTEXT_ID
                    and orq.CONTEXT_TYPE = 'Account'
                    left join r_account_type on r_account_type.account_type_key=its_account.account_type_key

                ------Period Context
                left join its_account_period ap on ap.account_period_key = orq.CONTEXT_ID
                    and orq.CONTEXT_TYPE = 'Period'
                left join its_account a on a.account_key=ap.account_key

                    where 1=1
                          and orq.notice_dt between (dateadd(yy, datediff(yy, 0, getdate()), 0)) and getdate()

                    group by orq.notice_dt,r_account_type.desc_short,orq.context_type,odf.DEFINITION_NAME,orq.context_id

        DECLARE @cols NVARCHAR (MAX)
                SELECT @cols = COALESCE (@cols + ',[' + CONVERT(NVARCHAR,[Dt], 1) + ']', 
                   '[' + CONVERT(NVARCHAR,[Dt], 1) + ']')
                   FROM    (SELECT DISTINCT [Dt] FROM #table) as PV  
                   ORDER BY [Dt] desc

        DECLARE @query NVARCHAR(MAX)
            SET @query = '           
                  SELECT * FROM 
                 (
                     select * from #table
                 ) x
                 PIVOT 
                 (
                     SUM(contextid)
                     FOR [Dt] IN (' + @cols + ')
                ) p      

                '     
    EXEC SP_EXECUTESQL @query`

o / p Я получаю вот так

notice accounttype 2/7/20 2/6/20 1/31/20 1/30/20 1/29/20
test   Marketing   500    663    898     9900    900
tes1   account     867    800    900     670     980

. .

...