У меня есть запрос, который выглядит примерно так:
;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) в виде строки.
Есть ли способ сделать это?
ИЗМЕНИТЬ Вопрос из комментариев: если два столбца имеют одинаковый макс, это может быть один? Да, это может быть любой. Подойдет любое имя столбца, если я знаю, откуда оно взялось.
Использование SQL Server 2008