-1
Я написал динамический SQL Pivot Query, который возвращает количество в день, число возвращенных столбцов динамическое в зависимости от количества дней между параметрами открытия. Проблема, с которой я сталкиваюсь, заключается в том, что в столбцах нет DateOrder, я предполагаю, что мне нужна какая-то форма или Order By, чтобы исправить это, есть ли у кого-нибудь идеи, в которых мне нужно было бы вставить его?SQL Dynamic Pivot
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
--declare and set variables
DECLARE @v_Columns VARCHAR(MAX)
,@v_StartDate DATETIME = GETDATE() - 10
,@v_EndDate DATETIME = GETDATE()
,@v_Query VARCHAR(max)
--select results
SELECT @v_Columns = Coalesce(@v_Columns, '[') + convert(VARCHAR, cast(DateCreated AS DATE), 111) + '],['
FROM (
SELECT DISTINCT cast(DateCreated AS DATE) AS DateCreated
FROM TransactionOriginTracking
) tot
WHERE tot.DateCreated BETWEEN @v_StartDate
AND @v_EndDate
SET @v_Columns = SUBSTRING(@v_Columns, 1, Len(@v_Columns) - 2)
SET @v_Query = 'select
*
from
(
SELECT
cast(Tracking.DateCreated as date) as [Date],
th.TotalQuantity [Quantity]
FROM
TransactionHeader th
Inner JOin TransactionOriginTracking as Tracking on Tracking.TransactionHeaderId = th.Id
and Tracking.WorkflowStageId = 9
Inner Join CompanyDivision on CompanyDivision.Id = th.CompanyDivisionId
WHERE
Tracking.DateCreated between ''' + CONVERT(VARCHAR(50), @v_StartDate, 111) + ''' AND ''' + CONVERT(VARCHAR(50), @v_EndDate, 111) + '''
) as src
Pivot
(
SUM(src.Quantity)
For src.Date IN (' + @v_Columns + ')
) as PivotView'
EXEC (@v_Query)