Ho una domanda che va qualcosa come questo:selezionare il nome della colonna da Query max
;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
La query funziona bene, ma voglio sapere è dove il Max (Importo) proviene.
Quindi nel mio set di risultati, oltre a (RowNumber, ObjectId, Amount) voglio il nome della colonna (Col1, Col2, Col3, Col4) come stringa.
C'è un modo per farlo?
EDIT Domanda dai commenti: Se due colonne hanno lo stesso valore massimo, potrebbe essere o uno? Sì, potrebbe essere uno dei due. Qualsiasi nome di colonna farà finché saprò da dove potrebbe provenire.
Utilizzo di SQL Server 2008
Cosa RDBMS stai usando? –
Cosa succede se sia Col1 che Col2 hanno lo stesso MAX: potrebbe essere uno dei due ...? – gbn
Spero non ti dispiaccia Ho appena modificato il tuo codice per renderlo un esempio percorribile come non avevo mai visto prima. Sentiti libero di tornare indietro! –