псевдоним для динамического SQL - PullRequest
0 голосов
/ 09 апреля 2019
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 голосов
/ 09 апреля 2019

На мой взгляд, вы неправильно использовали имена столбцов, поэтому просто запишите имена столбцов в @query:

set @query =
        (
        'SELECT Units, Volume, Value FROM [dbo].[RB_THI_UK_4_4_4_Fact_03012019]'
        )
0 голосов
/ 09 апреля 2019

Я думаю, что это должно работать:

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 в своих столбцах.Следовательно, это должно сработать.

...