动态sql的别名

时间:2019-04-09 14:01:09

标签: sql sql-server dynamic alias

DECLARE @listStr varchar(MAX);
set @liststr =
        (
  select Units   + ',' + Volume  + ','+ Value   from test_pivot_table where country = 'UK' for xml path('')
        )
DECLARE @query varchar(MAX);
set @query =
        (
        'SELECT ' + @listStr + ' FROM [dbo].[RB_THI_UK_4_4_4_Fact_03012019]'
        )
execute(@query)

查询的输出是:

f001 f002   f003
40  12  60
30  9   53

但我需要输出为:

units volume    value
40  12  60
30  9   53

所以基本上我想在此动态查询中使用别名,其中实际字段名称为f001,f002,f003,并使用映射表获取输出

2 个答案:

答案 0 :(得分:0)

我认为这应该可行:

select Units + ' as [Units], ' + Volume  + ' as [Volume], '+ Value + ' as 'Value]
from test_pivot_table
where country = 'UK' for xml path('');

我认为只有在test_pivot_table的列中具有值f001f002f003的情况下,您的查询才会这样做。因此,这应该可行。

答案 1 :(得分:0)

在我看来,您滥用了列名,因此只需将列名写入@query

set @query =
        (
        'SELECT Units, Volume, Value FROM [dbo].[RB_THI_UK_4_4_4_Fact_03012019]'
        )