Upadev Ответов: 0

Нужна помощь для создания динамического сводного запроса


Привет,

Я создал хранимой процедуры, которая была работает нормально до поворота. Мне нужно общее количество Кодзаказа Датаразмещения основе. Мой датаразмещения имеет тип 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

Что значит "не работает"? Каков ожидаемый результат и какой запрос возвращается в данный момент? Воспользуйся Улучшить вопрос виджет.

0 Ответов