选择列名我有一个查询是这样的:从最大查询
;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
查询工作正常,但我想知道的是马克斯(金额)的由来。 (RowNumber,ObjectId,Amount)我想要列(Col1,Col2,Col3,Col4)的名称作为字符串。
有没有办法做到这一点?
编辑 问题来自评论:如果两列有相同的最大值,它可能是一个?是的,它可以是任何一个。只要我知道它可能来自哪里,任何列名都会执行。
使用SQL Server 2008
您正在使用什么RDBMS? – 2010-10-01 20:03:33
如果Col1和Col2具有相同的MAX,该怎么办?它可能是一个......? – gbn 2010-10-01 20:05:40
希望你不介意我刚刚编辑你的代码,使它成为一个可运行的例子,因为我从来没有见过这种方法。随意将它滚回去! – 2010-10-01 20:20:58