2013-03-31 125 views
0

我正在使用SQL Server報告工具2008,並已創建如下表格。根據日期篩選出歷史記錄

我有一個數據集產生以下結果。基本上,每當數據庫中的費用字段發生變化時,表格就被賦予當前費用的停止日期,然後新的費用的新生效日期。這通常會導致存在空白的停止日期。 (例如UCN 1和UCN 495)如果從未收取費用,則您也會收到一個空白的停止日期。 (例如UCN 11)

我發現如果您使用下面的年份函數作爲計算字段,您會得到1爲空白字段的結果,然後可以使用過濾器函數僅包含「1」來查找所有的目前收費。

=Year(Fields!CEASED_DATE.Value) 

在一組特定的情況下,雖然,在這種情況下UCN 492沒有得到一個新的生效日期,因此沒有空白終止日期。在一個40,000條記錄數據庫中,這隻發生100次。

我想要做的是用當前電荷列出數據庫中的每個UCN,或者如果沒有充電電流則將該字段留空。基本上我想過濾出歷史。

這可能嗎?

UCN......CEASED_DATE....EFFECTIVE_DATE.....Charge 

1........12 July 2009...11 July 2009.......Rate 3 
1.......................12 July 2009.......Rate 4 

11 

492......12 July 2009...01 January 1900....Rate 4 
492......15 July 2009...12 July 2009.......Rate 5 
492......31 July 2011...15 July 2009.......Rate 2 

495......12 April 2009..04 November 1946...Rate 2 
495.....................12 April 2009......Rate 3 

回答

0

您是否可以在UCN中使用以下函數在報告服務中只分組了tablix?

=max(iif(year(Fields!CEASED_DATE.Value)=1, Fields!CHARGE.Value, "")) 

還是在數據集中類似?

Select UCN, 
    Max(case when ceased_date = '' then charge else '' end) current_charge 
From charges 
Group by UCN 
+0

嗨是的tablix選項的作品,這是一個很大的幫助與上述功能。實現這一目標是大型總體報告的一部分,我已經開始在表格中進行,而不是使用Tablix。將該函數放入列中後,我需要對其進行過濾,但是我無法在空白字段上對其進行過濾,因爲我將丟失所有重要記錄11和492.在更改爲Tablix之前,有任何建議嗎?謝謝 – user1957907

+0

基本上它是基於上述表達式抑制多行數據,但是當空白時,保留其中一行,究竟是一個tablix做什麼,但在一個表內 – user1957907

+0

我不相信你可以做這個過濾器在數據集上。我認爲唯一的方法是在可能的情況下更改查詢,或者在Tablix中使用文件環繞技術。 – glh