Нужна помощь для создания динамического сводного запроса
Привет,
Я создал хранимой процедуры, которая была работает нормально до поворота. Мне нужно общее количество Кодзаказа Датаразмещения основе. Мой датаразмещения имеет тип datetime. Теперь мне нужно разделить мой заказ на месяц и год, который не работает. Здесь я пытаюсь выполнить по его параметрам то есть
[CustomReports_RefPhysiTotalStudies_Monthly_Test] 'cdi', '1/10/2016', '6/20/2016','','',''
Что я уже пробовал:
Create Procedure [dbo].[CustomReports_RefPhysiTotalStudies_Monthly_Test] @Account As VarChar(100), @FromDate As VarChar(100), @ToDate As VarChar(100), @LocationList VARCHAR(3000) = NULL, @WTList VARCHAR(3000) = NULL, @Dictator varchar(50) = NULL AS SET NOCOUNT ON Declare @SQLStatement AS NVARCHAR(MAX) DECLARE @PivotColumns AS NVARCHAR(MAX) --DECLARE @SumPivot AS NVARCHAR(MAX) SELECT @PivotColumns= COALESCE(@PivotColumns + ',','') + QUOTENAME(concat(datename(Month,[Order Date]), datename(Year,[Order Date]))) FROM (SELECT DISTINCT os.[Order Date] from OrderSchedule os) Pivotexample --SELECT @PivotColumns --SET @SumPivot = replace(@PivotColumns , ',','+') SET @SQLStatement = ' use ' + @Account + ' SELECT * from ( select rp.LastName As RefLastName, rp.FirstName As RefFirstName, rp.City As City, rp.ZipCode As ZipCode, rp.State As STATE, os.MODALITY AS MODALITY, d.Signature AS RADIOLOGIST, os.OrderID, concat(datename(Month,os.[Order Date]), datename(Year,os.[Order Date])) as odateString, l.Name AS FACILITY from RefPhysician rp LEFT JOIN OrderSchedule os ON rp.ReferringId = os.PhysicianID LEFT JOIN Location l ON os.Location=l.Location LEFT JOIN Dictators d ON os.DictatorID=d.DictatorID WHERE os.Deleted=0 AND os.[Order Date] BETWEEN ''' + @FromDate + ''' and ''' + @ToDate + ''' ' IF LEN(@WTList) > 0 BEGIN SET @SQLStatement = @SQLStatement + 'AND os.Modality IN (''' + @WTList + ''')' END IF LEN(@LocationList) > 0 BEGIN SET @SQLStatement = @SQLStatement +'AND l.Location IN (''' + @LocationList + ''')' END IF LEN(@Dictator) > 0 BEGIN SET @SQLStatement = @SQLStatement + ' AND d.DictatorId = ''' + @Dictator + '''' END SET @SQLStatement = @SQLStatement + ' group by rp.LastName, rp.FirstName, rp.City, rp.Zipcode, rp.State, d.Signature, os.MODALITY, l.Name, os.OrderID, os.[Order Date]) pivotexample' set @SQLStatement = @SQLStatement+ ' PIVOT( Count(OrderID) FOR odateString IN (' + @PivotColumns + ')) p ' PRINT @SQLStatement Exec(@SQLStatement) --EXECUTE [CustomReports_RefPhysiTotalStudies_Monthly_Test] 'cdi', '1/10/2016', '6/20/2016','','',''
Maciej Los
Что значит "не работает"? Каков ожидаемый результат и какой запрос возвращается в данный момент? Воспользуйся Улучшить вопрос виджет.