[英]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.