簡體   English   中英

基於日期字段SSRS的動態分組

[英]Dynamic Grouping based on date field SSRS

在我的SSRS報告中,該報告具有一個帶有日期字段的數據集,如下所示

數據集返回以下類型的數據(僅作為示例)

Voucher Amount  Date
R3221    € 3,223.00     1-Dec-17
R3222    € 123.00   28-Nov-17
R3223    € 1,233.00     19-Oct-17
R3224    € 442.00   27-Sep-17
R3225    € 123.00   17-Nov-17
R3226    € 423.00   29-Oct-17
R3227    € 1,234.00     8-Oct-17

我想知道的是如何顯示按憑證和到期日期分組的數據

用戶應該能夠選擇開始日期和期間類型(日,周,月,日)以及兩列之間的間隔(例如3,10或30或任何其他數字)

因此用戶應該可以選擇期間類型,例如,如果他選擇“天和間隔”作為3,則報告應顯示

**voucher       start date      <Dynamic grouping columns based on the selection criteria>**

    R3221
    R3222
    R3223
    R3224
    R3225
    R3226
    R3227   

任何提示將不勝感激!

這只是解決方案的一部分。 首先生成報告中所需的日期期間,然后對表,過濾器和組進行LEFT JOIN

declare @dateFrom date
declare @periodInDays int
declare @periods int --how many periods of 10 days
set @periodInDays = 10; 
set @periods = 15; --how many periods of 10 days
set @dateFrom = getdate();

with [dates] as (
    select @dateFrom as date --start
    union all
    select dateadd(day, @periodInDays, [date]) as date
    from [dates]
    where [date] < DATEADD(day, @periodInDays * @periods, @dateFrom) --end
)
select [date]
from [dates]
option (maxrecursion 0)

在此示例中,每隔10天從開始日期(2017-12-01)返回16個日期(每行1個)

2017-12-01、2017-12-11、2017-12-21、2017-12-31、2018-01-10、2018-01-20 2018-01-30、2018-02-09、2018-02 -19,2018-03-01,2018-03-11,2018-03-21 2018-03-31,2018-04-10,2018-04-20,2018-04-30

要從上述日期表中按期間進行過濾以獲取開始日期,因此可以將該期間的結束日期計算為DATEADD(day, @periodInDays, [date]) ,此時我們無需查看下一行。

請讓我知道是否有人找到更直接的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM