【发布时间】:2015-12-23 16:47:17
【问题描述】:
我有一个 Oracle 11g 表,它有一个唯一的 ID 和几个带有数值的列,它看起来像这样:
ID COL1 COL2 COL3 ... COLn
1 0 15 20 12
2 4 0 10 0
3 20 0 3 8
我需要知道,对于每一行,包含最高值的列以及列名。例如,在这个例子中,如果我选择 ID = 1,结果应该是:
COL3
____
20
我尝试使用 GREATEST 函数,但它只返回值而不是列名。另一种方法是使用 CASE 语句,但是该表有 300 多个列,并且一对一比较会很糟糕。我听说过使用 PIVOT 功能,但我不知道如何应用它。任何建议都非常感谢!
【问题讨论】:
-
您的示例数据应该显示什么列名?第一行的最大值在
col3,第三行的最大值在col1。您的示例数据仅显示单行结果。多行应该使用什么列名?
标签: oracle max multiple-columns