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,并使用映射表获取输出
答案 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
的列中具有值f001
,f002
和f003
的情况下,您的查询才会这样做。因此,这应该可行。
答案 1 :(得分:0)
在我看来,您滥用了列名,因此只需将列名写入@query
:
set @query =
(
'SELECT Units, Volume, Value FROM [dbo].[RB_THI_UK_4_4_4_Fact_03012019]'
)