Я создал нужный результат с помощью следующего кода.
Сначала я создал представление исходной таблицы, в которой был добавлен номер строки, используя следующую функцию:
ROW_NUMBER() OVER(PARTITION BY a.Client_ID ORDER BY a.Billing_Order ASC) AS Row_No
и построил следующий код
enter code hereDECLARE @sql varchar(max)
DECLARE @colList varchar(max)
--create dynamic list of columns
SELECT @colList =
STUFF
(
(
SELECT + ',' +
quotename(colName + Row_No)
FROM Credible_Client_Insurance_Raw_Data_Query
CROSS APPLY
(
SELECT 1 As Ord, 'Payer_ID' ColName UNION ALL
SELECT 2 As Ord, 'Billing_Order' UNION ALL
SELECT 3 As Ord, 'Insurance_ID' UNION ALL
SELECT 4 As Ord, 'Group_No' UNION ALL
SELECT 5 As Ord, 'Copay_Fee' UNION ALL
SELECT 6 As Ord, 'Start_Date'
) v
GROUP BY colName, Ord, Row_No
ORDER BY Row_No, Ord
for xml path(''), type
).value('/','varchar(max)'),1,1,''
)
--unpivot columns into rows and then apply pivot
SET @sql
= '
SELECT Client_ID, ' + @colList + '
FROM
(
SELECT Client_ID, ColVal,
colName + Row_No ColName
FROM Credible_Client_Insurance_Raw_Data_Query
CROSS APPLY
(
SELECT Payer_ID As ColVal, ''Payer_ID'' ColName UNION ALL
SELECT Billing_Order, ''Billing_Order'' UNION ALL
SELECT Insurance_ID, ''Insurance_ID'' UNION ALL
SELECT Group_No, ''Group_No'' UNION ALL
SELECT CAST(Copay_Fee AS VARCHAR), ''Copay_Fee'' UNION ALL
SELECT CAST(Start_Date AS VARCHAR), ''Start_Date''
) v
) A
PIVOT
(
MAX(ColVal) FOR ColName IN (' + @colList + ')
) P1 '
EXEC(@sql)
Код был скопирован из другого вопроса
Поворот нескольких столбцов на основе одного столбца
Теперь у меня есть подпискана вопрос:
Теперь, когда я создал запрос, который предоставляет нужный мне результат
Мне нужно поместить результат в таблицу.
Я не могу взять этот запрос и сделатьэто в VIEW, потому что он начинается с оператора Declare (незаконно для представлений)
Так как мне перенести эти данные запроса в таблицу?