我是SSRS的新手。我有一个报告参数不起作用的报告。无论我选择什么价值,它似乎都没有得到那个价值。它只从查询中选择定义的值。如果我将查询中的参数定义为null,则返回null。其他人给了我那份报告,但我不知道这是否是定义参数的正确方法。参数名称是@DateRange,查询是:(如果这个太长,请告诉我我是否使用了错误的参数。)
PS:查询在SSMS中运行良好
DECLARE @Date datetime = getdate()
DECLARE @DateStart datetime
DECLARE @DateEnd datetime
DECLARE @CorpStart int = 0
DECLARE @CorpEnd int = 0
DECLARE @ReportTitle varchar(30) = ''
DECLARE @DateRange varchar(50) = N'Year-To-Date'
IF @DateRange = 'Today'
BEGIN
SET @DateStart = [dbo].[get_today_start](@Date)
SET @DateEnd = [dbo].[get_today_end](@Date)
SET @CorpStart = [dbo].udfGetCorpWeek(@DateStart)
SET @CorpEnd = [dbo].udfGetCorpWeek(@DateEnd)
END
IF @DateRange = 'Yesterday'
BEGIN
SET @DateStart = [dbo].[get_yesterday_start](@Date)
SET @DateEnd = [dbo].[get_yesterday_end](@Date)
SET @CorpStart = [dbo].udfGetCorpWeek(@DateStart)
SET @CorpEnd = [dbo].udfGetCorpWeek(@DateEnd)
END
IF @DateRange = 'Last Week'
BEGIN
--SET DATEFIRST 1
--SELECT DATEADD(dd,-7,[dbo].[get_week_start](getdate()))
--SELECT DATEADD(dd,-7,[dbo].[get_week_end](getdate()))
SET @DateStart = DATEADD(dd,-7,[dbo].[get_week_start](@Date))
SET @DateEnd = DATEADD(dd,-7,[dbo].[get_week_end](@Date))
SET @CorpStart = [dbo].udfGetCorpWeek(@DateStart)
SET @CorpEnd = [dbo].udfGetCorpWeek(@DateEnd)
END
IF @DateRange = 'Week-To-Date'
BEGIN
SET @DateStart = [dbo].[get_week_start](@Date)
SET @DateEnd = @Date --[dbo].[get_week_end](@Date)
SET @CorpStart = [dbo].udfGetCorpWeek(@DateStart)
SET @CorpEnd = [dbo].udfGetCorpWeek(@DateEnd)
END
IF @DateRange = 'Month-To-Date'
BEGIN
SET @DateStart = [dbo].[get_month_start](@Date)
SET @DateEnd = @Date --[dbo].[get_month_end](@Date)
SET @CorpStart = [dbo].udfGetCorpWeek(@DateStart)
SET @CorpEnd = [dbo].udfGetCorpWeek(@DateEnd)
END
IF @DateRange = 'Quarter-To-Date'
BEGIN
SET @DateStart = [dbo].[get_quarter_start](@Date)
SET @DateEnd = @Date --[dbo].[get_quarter_end](@Date)
SET @CorpStart = [dbo].udfGetCorpWeek(@DateStart)
SET @CorpEnd = [dbo].udfGetCorpWeek(@DateEnd)
END
IF @DateRange = 'Year-To-Date'
BEGIN
SET @DateStart = [dbo].[get_year_start](@Date)
SET @DateEnd = @Date --[dbo].[get_year_end](@Date)
SET @CorpStart = [dbo].udfGetCorpWeek(@DateStart)
SET @CorpEnd = [dbo].udfGetCorpWeek(@DateEnd)
END
IF @DateRange = 'Previous 4 Weeks'
BEGIN
SET @DateStart = DATEADD(dd,-29,[dbo].[get_week_start](@Date))
SET @DateEnd = DATEADD(dd,-1,[dbo].[get_week_start](@Date))
SET @CorpStart = [dbo].udfGetCorpWeek(@DateStart)
SET @CorpEnd = [dbo].udfGetCorpWeek(@DateEnd)
END
DECLARE @Result TABLE(
DateStart datetime,
DateEnd datetime,
CorpStart int,
CorpEnd int,
Region varchar(3),
ID int,
Program varchar(50), -- Program group
[2016 Leads] int, -- within 200 miles with phone number
[2017 Leads] int, -- within 200 miles with phone number
[Budget] int, -- budgeted lead #s
[SortOrder] int
)
INSERT INTO @Result(DateStart,DateEnd,CorpStart,CorpEnd,Region,ID,Program,[2016 Leads],[2017 Leads],[Budget],[SortOrder])
SELECT DateStart = @DateStart,
DateEnd = @DateEnd,
CorpStart = @CorpStart,
CorpEnd = @CorpEnd,
Region = 'TNC',
ID = pg.[ProgramGroupID],
Program = pg.[Name],
0,0,0,1
FROM refProgramgroup pg
WHERE pg.ProgramGroupID in(1,2,3,4,5,6,7,13,28,29,31)
INSERT INTO @Result(DateStart,DateEnd,CorpStart,CorpEnd,Region,ID,Program,[2016 Leads],[2017 Leads],[Budget],[SortOrder])
SELECT DateStart = @DateStart,
DateEnd = @DateEnd,
CorpStart = @CorpStart,
CorpEnd = @CorpEnd,
Region = 'TRG',
ID = pg.[ProgramGroupID],
Program = pg.[Name],
0,0,0,2
FROM refProgramgroup pg
WHERE pg.ProgramGroupID in(1,2,3,4,5,6,7,13,28,29,31)
INSERT INTO @Result(DateStart,DateEnd,CorpStart,CorpEnd,Region,ID,Program,[2016 Leads],[2017 Leads],[Budget],[SortOrder])
SELECT DateStart = @DateStart,
DateEnd = @DateEnd,
CorpStart = @CorpStart,
CorpEnd = @CorpEnd,
Region = 'RFR',
ID = pg.[ProgramGroupID],
Program = pg.[Name],
0,0,0,3
FROM refProgramgroup pg
WHERE pg.ProgramGroupID in(1,2,3,4,5,6,7,13,28,29,31)
INSERT INTO @Result(DateStart,DateEnd,CorpStart,CorpEnd,Region,ID,Program,[2016 Leads],[2017 Leads],[Budget],[SortOrder])
SELECT DateStart = @DateStart,
DateEnd = @DateEnd,
CorpStart = @CorpStart,
CorpEnd = @CorpEnd,
Region = 'TRO',
ID = pg.[ProgramGroupID],
Program = pg.[Name],
0,0,0,3
FROM refProgramgroup pg
WHERE pg.ProgramGroupID in(1,2,3,4,5,6,7,13,28,29,31)
INSERT INTO @Result(DateStart,DateEnd,CorpStart,CorpEnd,Region,ID,Program,[2016 Leads],[2017 Leads],[Budget],[SortOrder])
SELECT DateStart = @DateStart,
DateEnd = @DateEnd,
CorpStart = @CorpStart,
CorpEnd = @CorpEnd,
Region = 'BLR',
ID = pg.[ProgramGroupID],
Program = pg.[Name],
0,0,0,4
FROM refProgramgroup pg
WHERE pg.ProgramGroupID in(1,2,3,4,5,6,7,13,28,29,31)
INSERT INTO @Result(DateStart,DateEnd,CorpStart,CorpEnd,Region,ID,Program,[2016 Leads],[2017 Leads],[Budget],[SortOrder])
SELECT DateStart = @DateStart,
DateEnd = @DateEnd,
CorpStart = @CorpStart,
CorpEnd = @CorpEnd,
Region = 'NSL',
ID = pg.[ProgramGroupID],
Program = pg.[Name],
0,0,0,4
FROM refProgramgroup pg
WHERE pg.ProgramGroupID in(1,2,3,4,5,6,7,13,28,29,31)
INSERT INTO @Result(DateStart,DateEnd,CorpStart,CorpEnd,Region,ID,Program,[2016 Leads],[2017 Leads],[Budget],[SortOrder])
SELECT DateStart = @DateStart,
DateEnd = @DateEnd,
CorpStart = @CorpStart,
CorpEnd = @CorpEnd,
Region = 'LSR',
ID = pg.[ProgramGroupID],
Program = pg.[Name],
0,0,0,5
FROM refProgramgroup pg
WHERE pg.ProgramGroupID in(1,2,3,4,5,6,7,13,28,29,31)
UPDATE @Result
SET Budget = ISNULL((Select sum(u.LeadCount)
from [ETL].[dbo].[TRA_LeadBudget2016_Unpivot] u
where u.CorpWeek >= @CorpStart
and u.CorpWeek <= @CorpEnd
and u.ProgramGroupID = [@Result].ID
and u.Region = [@Result].Region)
,0)
UPDATE @Result
SET [2016 Leads] = ISNULL((Select count(distinct(L.PersonID)) --count(LD.LeadID)
from
tblLeadDistance LD with(nolock)
join
tblLead L with(nolock) on LD.LeadID = L.LeadID
join tblCampaignLead CL with(nolock) on CL.LeadID = L.LeadID
join tblCampaign C with(nolock) on C.CampaignID = CL.CampaignID
join tblProgram prog with(nolock) on C.ProgramID = prog.ProgramID
where prog.ProgramGroupID = [@Result].ID
and LD.LandmarkID = (CASE
WHEN [@Result].Region = 'TNC' THEN 1
WHEN [@Result].Region = 'TRG' THEN 2
WHEN [@Result].Region = 'RFR' THEN 5
WHEN [@Result].Region = 'TRO' THEN 4
WHEN [@Result].Region = 'BLR' THEN 16
WHEN [@Result].Region = 'NSL' THEN 23
WHEN [@Result].Region = 'LSR' THEN 25
END)
--and LD.DistanceMiles <= 201
and L.LeadStatusID <> 9
and L.DateCreated >= DATEADD(week, -52, @DateStart)
and L.DateCreated <= DATEADD(week, -52, @DateEnd)
and not(prog.ProgramID = 1000000265)
and L.OriginatingTable like '%Staging%'
),0)
UPDATE @Result
SET [2017 Leads] = ISNULL((Select count(distinct(L.PersonID))
from tblLeadDistance LD with(nolock)
join tblLead L with(nolock) on LD.LeadID = L.LeadID
join tblCampaignLead CL with(nolock) on CL.LeadID = L.LeadID
join tblCampaign C with(nolock) on C.CampaignID = CL.CampaignID
join tblProgram prog with(nolock) on C.ProgramID = prog.ProgramID
where prog.ProgramGroupID = [@Result].ID
and LD.LandmarkID = (CASE
WHEN [@Result].Region = 'TNC' THEN 1
WHEN [@Result].Region = 'TRG' THEN 2
WHEN [@Result].Region = 'RFR' THEN 5
WHEN [@Result].Region = 'TRO' THEN 4
WHEN [@Result].Region = 'BLR' THEN 16
WHEN [@Result].Region = 'NSL' THEN 23
WHEN [@Result].Region = 'LSR' THEN 25
END)
and L.LeadStatusID <> 9
and L.DateCreated >= @DateStart
and L.DateCreated <= @DateEnd
and L.OriginatingTable like '%Staging%'
),0)
SELECT * from @Result
答案 0 :(得分:0)
只是想确定 - 您的SSRS数据集中是否DECLARE @DateRange varchar(50) = N'Year-To-Date'
已注释掉了吗?因为如果没有,那就是它无法正常工作的原因。