Я пытаюсь взять свой исходный запрос и повернуть его в столбце SerOption со столбцом «Значение» под каждым соответствующим SerOption. Поэтому для моего примера я хочу, чтобы в качестве заголовков моих столбцов использовались «Asset Tag», «Make», «Model», «Description» и «Serial Number», а также каждый [Value] в соответствующем столбце.
Мой оригинальный запрос:
SELECT s.SerOption, sv.value as [Value], sv.SerialCat, sv.item, [load]
FROM SerialValues SV JOIN [Serialization] S on S.OID = sv.SerialCat
WHERE [load] in (141955)
ORDER BY item, serialCat
И моя попытка поворота до сих пор:
SELECT *
FROM (
SELECT s.SerOption, sv.value as [Value], sv.SerialCat, sv.item, [load]
FROM SerialValues SV JOIN [Serialization] S on S.OID = sv.SerialCat
WHERE [load] in (141955)
ORDER BY item, serialCat
) AS serial
PIVOT
(
[Value] FOR s.SerOption in ('Asset Tag', 'Make', 'Model', 'Description', 'Serial Number')
) AS PVT
Ошибка, которую я получаю при попытке запустить это:
Предложение ORDER BY недопустимо в представлениях, встроенных функциях, производных таблицах, подзапросах и общих табличных выражениях, если также не указаны TOP, OFFSET или FOR XML.
Также, похоже, есть синтаксическая ошибка рядом с ключевым словом FOR.
UPDATE
Я использовал следующий обновленный запрос:
SELECT *
FROM (SELECT s.SerOption, sv.value as [Value], sv.SerialCat, sv.item, [load]
FROM SerialValues SV JOIN
[Serialization] S
ON S.OID = sv.SerialCat
WHERE [load] in (141955)
) s
PIVOT (
MAX([Value]) FOR s.SerOption in ([Asset Tag], [Make], [Model], [Description], [Serial Number])
) AS PVT;
Чтобы проиллюстрировать, что я получаю сейчас, когда я заказал PVT по пунктам, я получаю следующее (я знаю, что мне не нужен порядок по, просто чтобы показать, что я получаю отдельные значения строк для каждого элемента):