SSRS 2008 查询:Table 所选参数的名称

SSRS 2008 query : Table name from parameter selected

我的数据库包含来自我的传感器名称的 table。首先,我尝试通过底部的查询获取我的 table 名称,以获取特定的 table 传感器名称

SELECT name AS TableName FROM sys.tables AS tbl WHERE (name LIKE 'ATRH.%')

然后SSRS上的结果是这样的:

但是我如何在查询数据表中将该参数用作 table 名称?

我已经在底部尝试了一个简单的查询,但我收到一条错误消息,SSRS 无法识别@PARAMETERTABLENAME

SELECT TOP (1000) [SensorID], [Time] ,[Value] FROM @PARAMETERTABLENAME where (Time BETWEEN @Start AND @End)

我该如何解决这个问题?

您可以使用

EXEC sp_executesql @sql_cmd

我试过这样:

DECLARE  @table varchar(50)
@table='[tmp_in_tashilat'+'_'+@rmz+']'

set @sql_cmd='select   COUNT(*)as cnt,ki into ki  from '+@table+' where (ki is not null) and ki<>'''' and knd='''+@compare+''' group by  ki  having COUNT(*)>1 ' 

EXEC(@sql_cmd)

您可以将此模板用于您自己的查询

我认为它首先使用 full 你必须在数据集

Query=>Query 部分写这个
EXEC('SELECT TOP (1000) [SensorID], [Time] ,[Value] FROM '+@PARAMETERTABLENAME+' where 
(Time BETWEEN '''+ @Start +''' AND '''+ @End+''')' 

然后设置数据集 Parameters 部分中使用的每个参数,并设置为您在报告的 Parameter 部分中声明的参数

我在这周做了很多次之后得到了答案,我尝试使用 select 数据库名称作为此查询的参数:

Select name AS SchemaName from sys.schemas
where name not in (
'guest',
'INFORMATION_SCHEMA',
'sys',
'db_owner',
'db_accessadmin',
'db_securityadmin',
'db_ddladmin',
'db_backupoperator',
'db_datareader',
'db_datawriter',
'db_denydatareader',
'db_denydatawriter')

然后我在这个查询中使用 dbname 参数尝试 select 表名 :

SELECT DISTINCT TABLE_NAME AS TableName
        FROM            INFORMATION_SCHEMA.TABLES
        WHERE        (TABLE_TYPE = 'BASE TABLE') AND (TABLE_SCHEMA = @SchemaName) AND (TABLE_NAME LIKE 'ATRH.1.%' or
                                 TABLE_NAME LIKE 'ATRH.2.%' or
                                 TABLE_NAME LIKE 'ATRH.3.%' or
                                 TABLE_NAME LIKE 'ATRH.4.%')
        ORDER BY TableName

然后我添加更多带有日期“开始”和“结束”的参数以获取该 2 个日期范围内的数据

在sql服务器中我用这个查询创建了一个存储过程

ALTER PROCEDURE [dbo].[testAtrh]
@TableName nvarchar(128),
@Start nvarchar(128),
@End nvarchar(128)

AS
BEGIN
declare @sql NVARCHAR(MAX)

    SET @sql = N'SELECT [SensorID], [Time], [Value]
    FROM' +quotename(@TableName)+ 
    'WHERE ([Time] BETWEEN '''+CONVERT(nvarchar(128), @Start, 121) +''' AND '''+ CONVERT(nvarchar(128), @End, 121)+ ''')ORDER BY Time desc'
    EXEC sp_executesql @sql
    
END

它可以在我的 ssrs 报告中使用 sql 服务器 2008,感谢大家的帮助