2012-12-13 50 views
1

我試圖在Report Builder 3.0中生成一個報告,該報告將在週一開始的每個工作週中填充列標題,並顯示該周的每天的日期。然後,報告將對每次這些日期出現在給定行條目的「收到日期」字段中進行計數(請參閱下面的圖圖1)。本週過濾器矩陣

我想知道如何在報表生成器中創建過濾器或參數,以僅顯示給定的當前日期,即使報表每天運行,然後仍然能夠進行計數。

圖1:矩陣實物模型(日期是本週的) enter image description here

以前我是用這個代碼來獲得表中的列,顯示未來五個工作日(這沒有按」 Ť這裏工作,因爲我需要的只是一週的工作日):

=IIF(6 - WeekDay(Today()) - X < 0, DateAdd("d", X + 2, Today()), 
DateAdd("d", X, Today())) 

回答

0

做最簡單的事情是讓SQL做繁重的你的方式是最方便的準備數據報告。所以我們要做的就是讓所有涉及到當前一週的工作日中的數據 - 也就是說,從週一東西本週的這個星期的星期五:

SELECT PersonId, SomeDate 
FROM MyTable 
WHERE SomeDate >= DateAdd('d', 0 - (WeekDay(Today())-2), Today()) // Monday 
AND SomeDate <= DateAdd('d', 0 - (WeekDay(Today())-6), Today()) // Friday 

然後你只給到這你的矩陣,分組的人和日期,你很好去。

+0

如果我使用查詢構建器,這些條件是否會作爲Report Builder 3.0中的過濾器添加?我無法確定如何編輯SQL拉。 – webdevanddata

0

我沒有這方面的工具avaliable但如果添加了一個篩選的數據集或表essentually:

X > today() - day of the week --this will get the date for the sunday 

而且

X < today() + (6 - day of the week) --this will get the date for saturaday 

這將確保您的數據是星期一之間星期五。

0
Declare @DateFrm datetime= N'2014-11-04' 
Select 
    [EnquiryTypeValue], 
    [CallerValue], 
    Created 
FROM [BPU].[dbo].[vwEnquiry] 
WHERE 
    CAST(Created as date) between DATEADD(ww, DATEDIFF(ww,0,@DateFrm), 0) 
     and DATEADD(ww, DATEDIFF(ww,0,@DateFrm), 6)