2012-01-21 1 views
2

У меня есть таблица, которая хранит данные следующим образом:Как сделать PIVOT в SQL Server с динамическими столбцами, значениями и типами данных?

 
ID  ListId ModuleId RecordId NValue CValue LValue Caption RowId 
8cb5f604 c07cea6f 24cb218c _01F15T1LJ 2.00000   False Wire # 24cb218c 
c023fe9e 2dcd56fe 24cb218c _01F15T1LJ   Red  False Label 24cb218c 
4a74bd46 c07cea6f 24cb218c _01F15T1LJ 1.00000   False Wire # 24cb218d 
30cae2cf 2dcd56fe 24cb218c _01F15T1LJ   White False Label 24cb218d

мне нужно повернуть дату на RowId и отобразить результаты что-то вроде этого:

 
RowId  Wire # Label 
24cb218d 1.00000 White 
24cb218c 2.00000 Red 

Я не могу понять, как заставить PIVOT работать таким образом.

Данные в таблицах, количестве столбцов и порядке открыты для редактирования конечным пользователем.   Возможно ли это сделать эффективно?   Если да, то каким образом.

ответ

2

Вы можете достичь этого, используя динамический TSQL (не забудьте использовать QUOTENAME, чтобы избежать атак с внедрением SQL):

[Обязательная ссылка на The Curse and Blessings of Dynamic SQL]

+0

Предпочитаю, что у меня будет использовать CASE WHEN, чтобы вытащить правильную колонку в PIVOT? Имеется до 4 столбцов, которые могут содержать значение (в зависимости от типа данных). – davids

Смежные вопросы