CHill60
Исходя из ожидаемого результата (где значения из строки являются именами столбцов), вам действительно нужно использовать PIVOT. Однако из-за схемы таблицы вам нужно будет использовать либо UNPIVOT, либо UNION, чтобы сначала получить данные в нужную вам форму. Этот результат должен быть либо в подзапросе, либо во временной таблице, либо в общем табличном выражении.
Поскольку это домашнее задание, я не дам вам здесь полный код, но вот шаги, которые вам нужно предпринять …
1. Получить данные в формате
itemid Attrib AttValue
4 XYZ A
4 Color White
4 PQR aaaaa
Я бы использовал
оператор UNPIVOT[
^] чтобы сделать это. Здесь есть отработанный пример -
SQL Banana: SQL UNPIVOT на нескольких Столбцах[
^]. Внимательно обратите внимание на предложение WHERE в этом примере.
Если вы не используете UNPIVOT, то вам нужно будет выбрать каждое имя атрибута по одному и объединить результаты.
2. Вы можете поместить результаты в
вложенный запрос[
^], ля
временная таблица[
^], ля
табличная переменная[
^] или А
Общее табличное выражение (CTE)[
^]. Мое личное предпочтение-CTE, но временная таблица подойдет.
3. Затем вам нужно сделать разворот (см. статью CP
Простой способ использования Pivot в SQL-запросе[
^] ) эти данные, чтобы получить желаемый результат.
Подсказка: Pivots всегда нуждается в какой-то кумулятивной функции в предложении PIVOT. В этом случае я бы использовал MAX().
Дайте ему попробовать, и если у вас все еще есть проблемы, ответьте кодом, который вы пробовали, и я постараюсь направить вас дальше.
chints786
Спасибо CHiLL60 и приношу извинения за поздний ответ.
Я смог получить результат с помощью unionall
Выбрать первые 1 'идентификатор элемента', [имя АТТ 1], [ФИО АТТ 2], [АТТ имя 3]
от испытаний
СОЮЗ ВСЕХ
Выберите [Itemid-значение], [значение АТТ 1], [Значение АТТ 2], [АТТ значение 3]
от испытаний
Большое спасибо за вашу помощь!!!
CHill60
Это совершенно неправильный путь к этому. Вы не выбираете "заголовки" в качестве строки данных - это выглядит нормально только в том случае, если вы вставляете результаты в Excel без заголовков столбцов. Учитывая, что многие другие студенты публиковали подобные вопросы, и тот факт, что вы сами упомянули PIVOT, должен дать вам ключ к тому, что вы провалите это задание с тем, что вы сделали.
chints786
прошу прощения за задержку. да, вы правы. но после получения желаемого результата я скопировал его в excel, а затем создал макрос, который транспонировал данные в соответствии с моими потребностями.