【发布时间】:2019-08-08 02:35:26
【问题描述】:
总结: 我有一个查询,我想在 SSRS 中为用户指定的表和用户指定的日期进行参数化。该查询包括几个 CTE。 如何将参数化查询用作 CTE?
我已经能够参数化“selectedData”,它的工作原理是这样的:
declare @cmd nvarchar(max)
Select @cmd = ' select [id]
,[theTime]
,[theDate]
,[KW]
,[airspeed_mph]
, [avg_drive_speed]
,Lag([avg_drive_speed]) over (order by id) previousValue
From [tunnelData].[dbo].[' + @tunnel + ']
where [theDate]>=(' + @date + ' )'
exec (@cmd)
现在我想将其添加为 CTE,以进一步减少查询中的数据。以下代码是我的尝试,但我从 SSRS 中的查询设计器收到错误“'declare' 附近的语法不正确”
-- First the Paramerized Table
WITH selectedData as (
declare @cmd nvarchar(max)
Select @cmd = ' select [id]
,[theTime]
,[theDate]
,[KW]
,[airspeed_mph]
,[avg_drive_speed]
,Lag([avg_drive_speed]) over (order by id) previousValue
From [tunnelData].[dbo].[' + @tunnel + ']
where [theDate]>=(' + @date + ' )'
exec (@cmd) ),
-- Second Table to Reduce Data
lagData as (
SELECT *,
Lag([theTime]) over (order by id) previousTime
from selectedData
where [avg_drive_speed] >= 40 and previousValue < 40 OR [avg_drive_speed] < 40 and previousValue >= 40
)
-- Last Select to Calculate Difference
Select *,
Case
when avg_drive_speed >= 40
then 0
else datediff(SECOND, previousTime, [theTime])
end AS runTime
from lagData
order by [theDate] ASC, [theTime] ASC
我可以在没有参数化的情况下运行 CTE,并且它可以工作:
With selectedData as (
Select
[id]
,[theTime]
,[theDate]
,[KW]
,[airspeed_mph]
,[avg_drive_speed]
,Lag([avg_drive_speed]) over (order by id) previousValue
FROM [tunnelData].[dbo].[aus]
where [theDate]>='2019-08-07' and [theDate]<= '2019-08-07'
),
lagData as (
SELECT *,
Lag([theTime]) over (order by id) previousTime
from selectedData
where [avg_drive_speed] >= 40 and previousValue < 40 OR [avg_drive_speed] < 40 and previousValue >= 40
)
Select *,
Case
when avg_drive_speed >= 40
then 0
else datediff(SECOND, previousTime, [theTime])
end AS runTime
from lagData
order by [theDate] ASC, [theTime] ASC
如果我删除参数化 (@tunnel / @date) 并在此之上运行代码,以下是我得到的结果:
【问题讨论】:
-
我不确定我是否正确理解了您的问题,但我认为下面的链接会让您对 SSRS 中的参数有更多了解。让我知道这是否是您正在寻找的 1.docs.microsoft.com/en-us/sql/reporting-services/… 2.mssqltips.com/sqlservertip/5757/…
-
谢谢。我以前读过这些,但我仍然遇到一些麻烦。让我为这个问题添加一些细节。
标签: sql sql-server dynamic reporting-services parameters