Я задал похожий вопрос [здесь]: Перемещение групп строк с одинаковым идентификатором в другую таблицу , но я не хочу записывать каждую строку для каждого имени атрибута.Я хочу иметь возможность взять строки в одном столбце из TABLE1 (скажем, есть 50 уникальных строк) и эффективно их транспонировать в TABLE2.Это небольшой пример таблицы ATTR_NME (имен атрибутов) в одном столбце:
ID ATTR_NME ATTR_VAL
1000 UPC 00015582981001
1000 Price 15.99
1000 Brand Oreo
1005 UPC 00038762291010
1005 Price 12.50
1005 Brand Sargento
1010 UPC 00198872499000
1010 Price 4.99
1010 Brand Olay
Таким образом, ID, UPC, Price и Brand должны быть собственными столбцами с ATTR_VAL в качестве строк данных.Вот различие между этим вопросом и моим предыдущим: скажем, у меня есть таблица с 50 различными значениями ATTR_NME, я хочу использовать этот столбец данных со всеми этими именами атрибутов для создания новой транспонированной таблицы без необходимости записывать следующие 50 раз дляразные атрибуты:
MAX(CASE WHEN ATTR_NME = 'UPC' THEN ATTR_VAL END) AS UPC
Я пытался объявить переменную для строк в столбце ATTR_NME следующим образом:
DECLARE @itm varchar(100);
SET @itm = (
SELECT ATTR_NME
FROM TABLE1
);
SELECT ID,
MAX(CASE WHEN ATTR_NME = @itm THEN ATTR_VAL END) AS [@itm]
FROM TABLE1
GROUP BY ID;
Но это не сработало по нескольким причинам;одна из них - это то, что я хотел обернуть агрегатную функцию вокруг ATTR_NME, где я установил @itm (но тогда я получил только одно имя атрибута).Это также не пометило / назвало колонку, как я хотел.Можно ли вообще делать то, что я хочу?Если да, то как?ТИА.