我创建了表emp_workout,它有6条记录,如下所示
empid | empname | Tax | Aadhar
------|---------|-------|------
1 | Raja | 12000 | null
1 | Raja | 4000 | null
2 | Bhasker | 11000 | null
2 | Bhasker | 4000 | null
1 | Raja | 4000 | null
1 | Raja | 4000 | 456ASBDD
我需要一个查询来打印输出,如下所示
empid | empname | Total_tax | Aadhar | Aadhar
------|--------- |-----------|----------|--------
1 | Raja | 24000 | 456ASBDD | Y
2 | Bhasker | 15000 | null | N
我试过groupby
empid | empname | total_tax | Aadhar | nvl2(aadhar)
-------| -------- |-----------|-----------|--------------
1 | Raja | 20000 | null | N
1 | Raja | 4000 | 456ASBDD | Y
2 | Bhasker | 15000 | null | N
Oracle具有一个方便的功能NVL2()
,可以简单地执行此操作:
SELECT empid, empname, SUM(Tax) as Total_tax,
MAX(Aadhar) as Aadhar_value,
NVL2(MAX(Aadhar), 'Y', 'N') as Aadhar
FROM emp_workout
GROUP BY empid, empname;
就像COALESCE()
但是需要三个参数-要测试的值,返回whenNOT NULL
的值和when返回的值NULL
。
这是一个Oracle扩展。的CASE
表达是标准的SQL。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句