Tengo una consulta que es algo como esto:seleccionar el nombre de la columna de consulta máximo
;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 consulta funciona bien, pero yo quiero saber es donde el Max (Cantidad) viene.
Así que en mi conjunto de resultados, además de tener (RowNumber, ObjectId, Amount) quiero el nombre de la columna (Col1, Col2, Col3, Col4) como una cadena.
¿Hay alguna manera de hacerlo?
EDIT Pregunta de los comentarios: si dos columnas tienen el mismo valor máximo, ¿podría ser una? Sí, podría ser cualquiera. Cualquier nombre de columna servirá mientras sepa de dónde podría provenir.
Uso de SQL Server 2008
Lo RDBMS está usando? –
¿Qué pasa si tanto Col1 como Col2 tienen el mismo MAX: podría ser uno ...? – gbn
Espero que no te importe. Acabo de editar tu código para que sea un ejemplo ejecutable, ya que nunca antes había visto ese enfoque. ¡Siéntase libre de deshacerlo! –