выберите имя столбца из максимального запроса

У меня есть запрос, который выглядит примерно так:

 ;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

6
задан Martin Smith 1 October 2010 в 20:19
поделиться