【发布时间】:2013-11-27 17:31:10
【问题描述】:
我有 2 个表和一个存储过程来显示其中的数据。
表 1 是 结果,如下所示:
ResultName ActivityDate ID
Result1 2013-11-14 1
Result1 2013-11-14 2
Result2 2013-11-14 3
Result3 2013-11-14 4
表 2 是 ResultDetail,如下所示:
ResultName ActivityDateType
Result1 DateType1
Result2 DateType1
Result3 DateType2
当我运行我的存储过程以从中选择数据时,我目前有这样的事情:
ResultName ActivityDateType ActivityDate ID
Result1 DateType1 2013-11-14 1
Result1 DateType1 2013-11-14 2
Result2 DateType1 2013-11-14 3
Result3 DateType2 2013-11-14 4
当我选择某个 ResultName 时,我想将我的选择结果中的 ActivityDate 列名称基于 ActivityDateType。
例如,如果我只选择了 Result1,我希望它是:
ResultName DateType1 ID
Result1 2013-11-14 1
Result1 2013-11-14 2
我尝试将它放在一个变量中,同时将表连接在一起,然后使用 str() 函数 ActivityDate as str(@ActivityDateType)
但它不起作用(可能由于我没有得到的明显原因)
有人有什么想法吗?
非常感谢
【问题讨论】:
-
如果“Result1”有两个不同的 ActivityDateType“DateType1”和“DatetYpe2”,你会同时显示为列和它下面的正确值,对吧?
-
ResultDetail 表的每个 ResultName 有 1 行,没有重复项,因此它们只会有 1 个 ActivityDateType
-
您需要动态 SQL 和 PIVOT。如果您希望将结果过滤为多个结果名称,则发布的 sol 涵盖了这一点。
标签: sql sql-server variables dynamic