我正在创建一个 Power BI 分页报表,使用下面的存储过程在报表中传递参数。传递了两个参数,它从一个参数级联到另一个参数,例如 Timeframe 参数作为按月、按周、按日期下拉菜单,它会向下级联到日历日期参数。
当从 Timeframe 参数中选择 By Month 值时,Calendar Date 参数具有下面的下拉菜单。
当从 Timeframe 参数中选择 By Week 值时,Calendar Date 下拉菜单将是
TY 表示当年,LY 表示上一年,例如 LY01 表示上一年第 01 周,TY01 表示当年第 01 周。我创建了下面的存储过程,但它适用于时间范围:按月。如何在存储过程 where 子句中的 LY01、LY02.... 和 TY01、TY02.... 的时间范围和日历日期中合并按周。
请,如何使这项工作,以便在分页报告中传递日历日期参数时将传递给存储过程。
CREATE procedure [dbo].[Test] (
@CalendarDate varchar(50)
)
as
begin
declare @sql nvarchar(MAX)
SELECT
i.[Item Nbr]
,i.[Brand Name]
,i.[Calendar Date] as Calendar_date
,i.[Asda Week]
, AVG([sell_price])as [Avg_Price]
, SUM([sell_price]) as [Sell_Price]
, SUM([wkly_sales])as [wkly_sales]
, SUM([wkly_qty]) as [wkly_qty]
FROM dbo.vw_item as i
WHERE
DATENAME(MONTH,i.[Calendar Date]) = CASE
WHEN RIGHT(@CalendarDate,2) = 'TY'
THEN SUBSTRING(@CalendarDate,1,Charindex(' ',@CalendarDate,1)-1)
ELSE SUBSTRING(@CalendarDate,1,Charindex(' ',@CalendarDate,1)-1) END
AND YEAR(i.[Calendar Date])= CASE WHEN RIGHT(@CalendarDate,2) = 'TY'
THEN Year(Getdate())
ELSE Year(Getdate())-1 END
GROUP BY
i.[Item Nbr]
,i.[Brand Name]
,i.[Calendar Date]
,i.[Asda Week]
end