Здесь приведена пересмотренная версия ответа @Tayrn, которая может помочь вам понять, что немного упростить:
Это может быть не лучший способ сделать это, но это помогло мне обернуть голову как сворачивать таблицы.
ID = строки, которые вы хотите свернуть
MY_KEY = столбец, который вы выбираете из исходной таблицы, которая содержит имена столбцов, которые вы хотите развернуть.
VAL = значение, которое вы хотите возвращать под каждым столбцом.
MAX (VAL) => Может быть заменен другими вспомогательными функциями. SUM (VAL), MIN (VAL), ETC ...
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(MY_KEY)
from yt
group by MY_KEY
order by MY_KEY ASC
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT ID,' + @cols + ' from
(
select ID, MY_KEY, VAL
from yt
) x
pivot
(
sum(VAL)
for MY_KEY in (' + @cols + ')
) p '
execute(@query);
После дальнейших раскопок я пришел к следующему результату: вам просто нужно красиво поговорить с ROW ().
Это будет работать:
INSERT INTO outputTable
SELECT ROW(col1, col2)
FROM (
SELECT
col1,
ROW(col1, col1) as col2
FROM inputTable
) tbl2
Примечание:
Я представил вопрос JIRA здесь:
https://issues.apache.org/jira/projects/FLINK/issues/FLINK-11399
Будет обновлять этот пост соответственно