使用包含声明变量的动态查询在 SSRS 中填充数据集
Populating Dataset in SSRS Using Dynamic Query Including Declare Variables
我目前正在为我的项目使用 SQL Server 2012 和 Visual Studio 2012。
我的问题是下面的代码包含声明变量。基本上,当我在 SQL 服务器中使用它时,我将 @StartDate 设置为当月的第一天,将 @EndDate 设置为当月的最后一天(十二月)
DECLARE @StartDate date
DECLARE @EndDate date
-- SET @StartDate = '20161201'
-- SET @EndDate = '20161231'
SELECT A.[TYPE_NAME], -- Type_Name
A.[STRT_DTTM], --Start Date
A.[END_DTTM], --End Date
B.[ASSIGNED_DT], --Assigned Date
CASE WHEN (CAST(A.[STRT_DTTM] AS DATE) <= @EndDate AND (CAST(A.[END_DTTM] as date) > @EndDate OR A.[END_DTTM] IS NULL))
THEN 1
ELSE 0
END AS 'OpenIndicator',
CASE WHEN CAST(A.[END_DTTM] as DATE) between @StartDate AND @EndDate
THEN 1
ELSE 0
END AS 'ClosedIndicator',
CASE WHEN CAST(B.[ASSIGNED_DT] as DATE) between @StartDate AND @EndDate
THEN 1
ELSE 0
END AS 'AssignedIndicator',
FROM Report AS A
INNER JOIN Dimension AS B
ON A.[ID] = B.[ID]
WHERE 1=1
AND A.[EXPIRE_DATE] = '12/31/9999' --Expire Date (Basically looking for active records.)
AND (A.[TYPE_NAME] like '%Bicycle%'
OR A.[TYPE_NAME] like '%Car%')
到目前为止,在 SSRS 中,我已将上述代码放入数据集中。我还在 SSRS StartDate 和 EndDate 中创建了 2 个参数。当我尝试 运行 基于数据集的简单 tablix 时...没有任何显示。
我注释掉了 SET @StartDate = '20161201' 和 SET @EndDate = '20161231'。
我在工作中能做的事情非常有限,所以不幸的是我也不能使用存储过程,因为我认为这可以使它更容易。
但我正在尝试通过用户输入到两个参数 StartDate 和 EndDate 中的内容来填充类似销售的数据集,但我在 SSRS 中遇到了问题。任何人都可以帮助我确切地做什么,我很迷茫。
尝试在代码中添加注释以使其更易于理解,但由于不想在工作中遇到麻烦而不得不更改一些内容。
您不需要在数据集查询中声明变量,这是在 SSRS 应用层处理的。您的查询应该类似于..
SELECT A.[TYPE_NAME], -- Type_Name
A.[STRT_DTTM], -- Start Date
A.[END_DTTM], -- End Date
B.[ASSIGNED_DT], -- Assigned Date
CASE WHEN (CAST(A.[STRT_DTTM] AS DATE) <= @EndDate
AND (CAST(A.[END_DTTM] as date) > @EndDate OR A.[END_DTTM] IS NULL))
THEN 1
ELSE 0
END AS 'OpenIndicator',
CASE WHEN CAST(A.[END_DTTM] as DATE) between @StartDate AND @EndDate
THEN 1
ELSE 0
END AS 'ClosedIndicator',
CASE WHEN CAST(B.[ASSIGNED_DT] as DATE) between @StartDate AND @EndDate
THEN 1
ELSE 0
END AS 'AssignedIndicator',
FROM Report AS A
INNER JOIN Dimension AS B
ON A.[ID] = B.[ID]
WHERE 1=1
AND A.[EXPIRE_DATE] = '12/31/9999'
AND (A.[TYPE_NAME] like '%Bicycle%'
OR A.[TYPE_NAME] like '%Car%')
既然您已经提到您已经在 SSRS 中创建了参数,请右键单击您的 DataSet
并转到 Properties
,然后在 Parameters
选项卡上,创建您的 SSRS 参数映射到您的查询参数。
最后,如果您希望默认日期为当月的第一天和最后一天,您可以转到 Parameters
,右键单击转到 Properties
,转到 Default Values
选项卡并单击 Add
并使用以下表达式。
本月第一天
=Today.AddDays(1-Today.Day)
本月最后一天
=DateSerial(Year(Now()), Month(Now()), "1").AddMonths(1).AddDays(-1)
我目前正在为我的项目使用 SQL Server 2012 和 Visual Studio 2012。
我的问题是下面的代码包含声明变量。基本上,当我在 SQL 服务器中使用它时,我将 @StartDate 设置为当月的第一天,将 @EndDate 设置为当月的最后一天(十二月)
DECLARE @StartDate date
DECLARE @EndDate date
-- SET @StartDate = '20161201'
-- SET @EndDate = '20161231'
SELECT A.[TYPE_NAME], -- Type_Name
A.[STRT_DTTM], --Start Date
A.[END_DTTM], --End Date
B.[ASSIGNED_DT], --Assigned Date
CASE WHEN (CAST(A.[STRT_DTTM] AS DATE) <= @EndDate AND (CAST(A.[END_DTTM] as date) > @EndDate OR A.[END_DTTM] IS NULL))
THEN 1
ELSE 0
END AS 'OpenIndicator',
CASE WHEN CAST(A.[END_DTTM] as DATE) between @StartDate AND @EndDate
THEN 1
ELSE 0
END AS 'ClosedIndicator',
CASE WHEN CAST(B.[ASSIGNED_DT] as DATE) between @StartDate AND @EndDate
THEN 1
ELSE 0
END AS 'AssignedIndicator',
FROM Report AS A
INNER JOIN Dimension AS B
ON A.[ID] = B.[ID]
WHERE 1=1
AND A.[EXPIRE_DATE] = '12/31/9999' --Expire Date (Basically looking for active records.)
AND (A.[TYPE_NAME] like '%Bicycle%'
OR A.[TYPE_NAME] like '%Car%')
到目前为止,在 SSRS 中,我已将上述代码放入数据集中。我还在 SSRS StartDate 和 EndDate 中创建了 2 个参数。当我尝试 运行 基于数据集的简单 tablix 时...没有任何显示。
我注释掉了 SET @StartDate = '20161201' 和 SET @EndDate = '20161231'。
我在工作中能做的事情非常有限,所以不幸的是我也不能使用存储过程,因为我认为这可以使它更容易。
但我正在尝试通过用户输入到两个参数 StartDate 和 EndDate 中的内容来填充类似销售的数据集,但我在 SSRS 中遇到了问题。任何人都可以帮助我确切地做什么,我很迷茫。
尝试在代码中添加注释以使其更易于理解,但由于不想在工作中遇到麻烦而不得不更改一些内容。
您不需要在数据集查询中声明变量,这是在 SSRS 应用层处理的。您的查询应该类似于..
SELECT A.[TYPE_NAME], -- Type_Name
A.[STRT_DTTM], -- Start Date
A.[END_DTTM], -- End Date
B.[ASSIGNED_DT], -- Assigned Date
CASE WHEN (CAST(A.[STRT_DTTM] AS DATE) <= @EndDate
AND (CAST(A.[END_DTTM] as date) > @EndDate OR A.[END_DTTM] IS NULL))
THEN 1
ELSE 0
END AS 'OpenIndicator',
CASE WHEN CAST(A.[END_DTTM] as DATE) between @StartDate AND @EndDate
THEN 1
ELSE 0
END AS 'ClosedIndicator',
CASE WHEN CAST(B.[ASSIGNED_DT] as DATE) between @StartDate AND @EndDate
THEN 1
ELSE 0
END AS 'AssignedIndicator',
FROM Report AS A
INNER JOIN Dimension AS B
ON A.[ID] = B.[ID]
WHERE 1=1
AND A.[EXPIRE_DATE] = '12/31/9999'
AND (A.[TYPE_NAME] like '%Bicycle%'
OR A.[TYPE_NAME] like '%Car%')
既然您已经提到您已经在 SSRS 中创建了参数,请右键单击您的 DataSet
并转到 Properties
,然后在 Parameters
选项卡上,创建您的 SSRS 参数映射到您的查询参数。
最后,如果您希望默认日期为当月的第一天和最后一天,您可以转到 Parameters
,右键单击转到 Properties
,转到 Default Values
选项卡并单击 Add
并使用以下表达式。
本月第一天
=Today.AddDays(1-Today.Day)
本月最后一天
=DateSerial(Year(Now()), Month(Now()), "1").AddMonths(1).AddDays(-1)