我有一个表格,如下所示:
--------------------------------
ENTITY | VALUE X | VALUE Y
--------------------------------
AAA | 100 | 50
--------------------------------
BBB | 0 | 20
--------------------------------
CCC | null | null
--------------------------------
DDD | 100 | 100
--------------------------------
我想确定哪一列(X或Y)具有最大的值(在我的实际数据集中有五列,但为简单起见,我在此使用两列)。
如果两者都为空,我希望结果为空。
如果发生平局,我想为平局者设定一个等级(x> y> z ...)
所需的输出如下所示
---------------------------------------------------
ENTITY | VALUE X | VALUE Y | DESIRED OUTPUT
---------------------------------------------------
AAA | 100 | 50 | X
---------------------------------------------------
BBB | 0 | 20 | Y
---------------------------------------------------
CCC | null | null | null
---------------------------------------------------
DDD | 100 | 100 | X
---------------------------------------------------
我一直在尝试使用,MAX()
但是我认为这主要是为了比较列中的行,而不是相反。
任何帮助将不胜感激。谢谢!
您可以通过case
逻辑来做到这一点。假设没有一个值是NULL
:
select t.*,
(case greatest(x, y)
when x then 'x'
when y then 'y'
end)
from t;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句