SQL从另一个查询中设置列名

时间:2009-03-02 17:25:52

标签: sql reporting-services

我正在使用MS Reporting Services来绘制Oracle数据库中的一些数据。我想使用另一个select语句中的值来命名select语句中的列。这可能吗?

而不是

Select Column1 As 'Test' From Table1
我可以做点什么吗

Select Column1 As (Select column2 from Table2 where Value = 1) From Table1

3 个答案:

答案 0 :(得分:2)

我认为你必须分别查询,然后动态地形成查询。有兴趣看看是否有不同的答案。

答案 1 :(得分:1)

我的PL / SQL有点生疏,所以接下来是比编译和编码更多的伪代码。测试代码。这完全脱离了我的头脑。但是,如果您知道表中列的特定序号位置,您可以尝试这样做:

columnName varchar2(50):=

Select column_name
From all_tab_columns c 
Where lower(table_name) = '<% Your Table2 Name %>' And
    column_id = 9 -- The appropriate ordinal
Order By column_id;

选择Column1作为columnName来自Table1;

从“all_tab_columns”中抽取的列值可能会对您有所帮助。看看周围,看看。

我希望这会有所帮助。

答案 2 :(得分:1)

您可以将所有需要的列名称查询到单独的报表数据集中,创建隐藏的多值报表参数vColumns,将列设置为数据集作为参数默认值,并将其用作字符串数组:
参数!vColumns(0).Value - 将是第一列等。因此您可以将它们用作查询参数。

请参阅Lesson 4: Adding a Multivalue Parameter