我有一张 table
------------------------
S.No Name Amount Imp_Num
1 A 10 12345
2 B 20
3 A 30
4 C 40 4555
5 B 50
--------------------------
我想要类似的东西
---------------------------------------
Name Total_Amount Imp_Num Imp_Num_Present
A 40 12345 Y
B 70 null N
C 40 4555 Y
---------------------------------------
如果特定名称的重要号码至少出现一次并且应捕获重要号码,则 important_number_present 列应为 Y。假定特定名称的重要编号相同。如果不同,则最新编号应显示为 imp_numb。 (但这是次要的)。
我试过类似的东西
Select sum(amount) as total_amount, imp_num, nvl2(imp_num,'Y','N') from sampletable group by imp_num;
但是无法检索名称,没有名称的数据也没有意义。我可能做错了什么。是否可以在 SQL 而不是 pl/sql 中完成一个可行的解决方案。
Group by with name 返回带有空条目和 imp_num 条目的名称。
我正在为这事绞尽脑汁。如果有人解决它,将会有很大的帮助。
提前致谢
最佳答案
您可以在 imp_num 上使用(假的)聚合函数并按名称分组
Select Name, sum(amount) as total_amount, max(imp_num), nvl2( max(imp_num),'Y','N')
from sampletable
group by Name;
关于sql - 检查将 nvl2 与多个分组依据一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49151409/