2017-10-04 12 views
0

저장 프로 시저를 호출하는 SSRS 보고서가 있습니다.보고서 작성기를 사용하여 SSRS에서 오늘 날짜까지 SQL 데이터 집합을 필터링하려고합니다.

USE [TSC-Telaid] 
GO 
/****** Object: StoredProcedure [dbo].[TW_spRPTAllReceiverInventory] Script Date: 10/4/2017 2:06:58 PM ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 



ALTER PROCEDURE [dbo].[TW_spRPTAllReceiverInventory] 
@SiteId varchar(50), 
@ReceiverId int 
AS 

BEGIN 

DECLARE @SQL varchar(8000), @Index int, @Value varchar(500), @Source varchar(100) 

SELECT @Index = CHARINDEX('Initial Catalog=', ConnectionString) + 16, @Value = ConnectionString 
FROM CustomerSetting 
WHERE SiteId = @SiteId 

SET @Source = '[' + SUBSTRING(@Value , @Index, CHARINDEX(';', @Value, @Index) - @Index) + ']' 

SET @SQL = 'SELECT R.SiteId, L.* 
     FROM ' + @Source + '.[dbo].[vwReceiver] R JOIN ' + 
      @Source + '.[dbo].[vwInventory] L ON R.ReceiverId = L.ReceiverId 
     WHERE R.ReceiverId = ' + CAST(@ReceiverId as varchar) 

EXEC(@SQL) 

END 

내가 데이터 세트에 @SiteId & @ReceiverID 전달 : 다음 절차입니다. 내가 가져온 필드 중 하나는 DateReceived입니다. DateReceived = today() 만 반환하지만 작동하지 않도록 데이터 집합을 필터링하려고합니다.

가 나는 또한 DateAdd 함수 BETWEEN DateReceived에 필터 식을 설정하려고했습니다 ("D"를 - 1, 오늘()) & DateAdd 함수 ("D", 1, 오늘은())

나는 아니에요 SQL은 처음이지만 SSRS는 처음이다.

+0

구문이 올바르지 않습니다. 날짜 부분 식별자 (' ''d' '') 주변의 따옴표를 제거하고'today()'를'getdate()'로 변경하십시오. 또는'... DateReceived> = cast (getdate()로 날짜)'와 같은 것을 할 수 있습니다. 현재 자정부터 자정까지 모든 것을 얻을 수 있습니다. – Xedni

+0

@Xedri OP는 SSRS 함수를 사용하므로'today'가 유효합니다. @ 드류 잭슨. 'DateReceived' 열이 날짜 또는 날짜 시간을 반환합니까? –

+0

그것은 datetime을 반환합니다 –

답변

0

나는 그것을 이해했다고 생각합니다. 표현식을 다음과 같이 조정해야했습니다.

DateReceived is between =DateAdd(DateInterval.Day, 0, Today()) AND =DateAdd(DateInterval.Day, 1, Today()) 

이 방법이 효과가있는 것 같습니다.