【发布时间】:2016-08-02 01:08:35
【问题描述】:
我需要通过传递startDate 和EndDate 参数来运行存储过程。存储过程根据这些参数动态创建PeriodColumns:每 3 个月 1 列。
示例 (dd/mm/yyyy):
- 开始日期:01/01/2014
结束日期:01/12/2014
-
列:
id Period0Status Period1Status Period2Status Period3Status 1 Active Waiting Passive Closed 2 Active Passive Active Completed 开始日期:01/01/2014
- 结束日期:01/06/2014
-
列:
id Period0Status Period1Status 7 Active Completed 8 Active Waiting
当我尝试选择查询时:
Select *
from myTable t
where t.Period2 = ...
它不允许我,因为定义中没有描述 Period2 列。如上所述,这些列是动态生成的。表定义:
Create Table myTable (id int)
另一方面,像
这样的查询Select *
from myTable t
where Period2 = ...
以某种方式工作正常,即使 Period2 在查询中带有红色下划线。但是,当我将此存储过程连接到另一个应用程序 Microsoft SSRS 2008 时,问题就开始了。当我单击 DataSet 属性中的 Refresh Fields 时,出现错误提示:
验证您是否可以连接到数据源以及您的查询语法是否正确
我无法在表格定义中定义固定期间。如果不定义它们,我将无法在WHERE 子句中合法地使用它们 - 当 SQL Server 用红色下划线并说语法错误时,即使存储过程在我在 SSRS 上使用它时它正在运行,它也无法正常工作并给出提及错误。
我该如何解决这个问题?任何帮助将不胜感激!
【问题讨论】:
-
我认为报告服务有一个固定的元数据要求。除非您为列设置“默认”名称(field1、field2、field3)并始终在数据集中提供它们,即使在未映射的列中全部为 NULL。
标签: sql sql-server sql-server-2008 reporting-services ssrs-2008