У меня есть запрос, который выглядит примерно так:
;WITH t as
(
select 1 as RowNumber, 1 as ObjectID, 10 as [Col1], 20 as [Col2], 20 as [Col3], 20 as [Col4] UNION ALL
select 2 as RowNumber, 2 as ObjectID, 20 as [Col1], 30 as [Col2], 40 as [Col3], 50 as [Col4]
)
SELECT RowNumber, ObjectID,
(
SELECT MAX(Amount)
FROM (
SELECT [Col1] AS Amount
UNION ALL
SELECT [Col2]
UNION ALL
SELECT [Col3]
UNION ALL
SELECT [Col4]
) d
WHERE Amount > 0
)
FROM t
Запрос работает нормально, но я хочу знать, откуда берется Max (Amount).
Итак, в моем наборе результатов, помимо наличия (RowNumber, ObjectId, Amount), я хочу, чтобы имя столбца (Col1, Col2, Col3, Col4) представляло собой строку.
Есть ли способ сделать это?
EDIT
Вопрос из комментариев: если два столбца имеют одинаковый максимум, это может быть либо один? Да, это может быть один из них. Подойдет любое имя столбца, если я знаю, откуда оно.
Использование SQL Server 2008