0
다음과 같이 저장 프로 시저가 있습니다. 동적 피벗에 매개 변수를 전달해야합니다. 내 쿼리 실행, 나는 그냥 전달 된 매개 변수동적 쿼리에 매개 변수 전달
-- AND (@SelectedSystemIDs IS NULL OR System.ID IN(select * from dbo.SplitInts_RBAR_1(@SelectedSystemIDs, ',')))
--AND ((@PlatformID IS NULL) OR (System.PlatformID = @PlatformID) OR (@PlatformID = 12 AND System.PlatformID <= 2))
-- AND (ServiceEntry.ServiceDateTime between @StartDate and @EndDate)
그래서 위의 기준을 추가 할에 따라 몇 가지 필터링을 할 필요가, 어떻게 달성 할 수?
ALTER PROCEDURE [dbo].[spExportStuff]
(@StartDate datetime,
@EndDate datetime,
@SelectedSystemIDs nvarchar (2000) = NULL,
@SelectedTsbIDs nvarchar (2000) = NULL,
@UserRoleID int
)
AS
DECLARE @InstrumentType int = NULL
DECLARE @PlatformID int = null
IF (@SelectedSystemIDs = '')
begin
SET @SelectedSystemIDs = NULL
END
IF (@SelectedTsbIDs = '')
begin
SET @SelectedTsbIDs = NULL
END
IF(@UserRoleID = 1)
BEGIN
SET @PlatformID = 1
END
IF(@UserRoleID = 2)
BEGIN
SET @PlatformID = 2
END
IF (@UserRoleID = 3)
BEGIN
SET @PlatformID = 12
END
IF(@UserRoleID = 4)
BEGIN
SET @PlatformID = 3
END
IF(@UserRoleID = 5)
BEGIN
SET @PlatformID = 4
END
IF(@UserRoleID = 6)
BEGIN
SET @PlatformID = NULL
END
DECLARE @PivotColumnHeaders NVARCHAR(MAX)
SELECT @PivotColumnHeaders =
COALESCE(
@PivotColumnHeaders + ',[' + cast(SystemFullName as Nvarchar) + ']',
'[' + cast(SystemFullName as varchar)+ ']'
)
FROM System
DECLARE @PivotTableSQL NVARCHAR(MAX)
SET @PivotTableSQL = N'
SELECT *
FROM (
SELECT
TSBNumber [TSBNumber],
SystemFullName,
ClosedDate
FROM ServiceEntry
INNER JOIN System
ON ServiceEntry.SystemID = System.ID
Group By TSBNumber, SystemFullName, ClosedDate
) AS PivotData
PIVOT (
max(ClosedDate)
FOR SystemFullName IN (
' + @PivotColumnHeaders + '
)
) AS PivotTable
'
EXECUTE(@PivotTableSQL)
내가 실행 문 근처에서 다시 선언 할 필요 없다 동적 쿼리에 추가 할 수 있습니다? – user721
@ user721, 입력 매개 변수이므로 선언 할 필요가 없습니다. – radar