Mam kwerendę, która wygląda mniej więcej tak:wybierz nazwę kolumny z max zapytania
;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
Kwerenda działa prawidłowo, ale chcę wiedzieć, gdzie jest Max (Amount) pochodzi.
Tak więc w moim zestawie wyników, oprócz posiadania (RowNumber, ObjectId, Amount) chcę, aby nazwa kolumny (Col1, Col2, Col3, Col4) była łańcuchem.
Czy jest jakiś sposób to zrobić?
EDIT Pytanie z komentarzami: Jeżeli dwie kolumny mają taką samą max, może to być jeden? Tak, może to być jedna. Każda nazwa kolumny będzie działać tak długo, jak długo będę wiedział, skąd może pochodzić.
Korzystanie z SQL Server 2008
Co RDBMS używasz? –
Co jeśli zarówno Col1, jak i Col2 mają ten sam MAX: może to być jeden ...? – gbn
Mam nadzieję, że nie przeszkadza mi, że właśnie zredagowałem kod, aby był to działający przykład, ponieważ nigdy wcześniej nie widziałem takiego podejścia. Zachęcamy do jego wycofania! –