【发布时间】:2018-06-12 17:12:37
【问题描述】:
我有一个数据集,其中包含每个帐户的月薪支付行。我们为此设置了 6 列 -
Salary_1、Salary_2、Salary_3、Salary_4、Salary_5 和 Salary_6。
有时没有填写工资 3、4、5、6 和偶尔 2,有时因为他们失业了,所以没有填写。在这种情况下,我们在字段中有 0。
我需要做的是结合所有工资并从这些列中找到 MAX 和 MIN ---
Select
Greatest(Salary_1, Salary_2, Salary_3, Salary_4, Salary_5, Salary_6) as MaxSal,
Least(COALESCE(Salary_1, Salary_2, Salary_3, Salary_4, Salary_5, Salary_6),0) as MinSal
from
(select
sal1 as Salary_1, Select sal2 as Salary_2, Sal3 as Salary_3, sal4 as Salary_4, Sal5 as Salary_5, Sal6 as Salary_6
from ....)a
问题是,这将返回正确的 Max Sal 值,但返回 Min 的 0.00,因为它是最小值但不会让我忽略 0,但在这种情况下,0 不是我想要的最低工资值,我这里需要第二低的值。
我尝试将原始 Sal1-Sal6 值设置为 NULLIF 0,它返回 NULL 为最大值,0 为最小值。
我还能看什么?结合 NULLIF 的 COALESCE 对我没有用,这是在以前的问题上推荐的。谢谢!
【问题讨论】: