sql - 检查将 nvl2 与多个分组依据一起使用

标签 sql oracle group-by nvl

我有一张 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/

相关文章:

mysql - 如何在mysql中加入两个查询

sql - SQL 查询中不同的关键字用法

mysql查询组最新插入

python - 创建由另一列 pandas 分组的一列的排列

c# - 在 LINQ 中按时间跨度分组

sql - Liquibase:如何将日期列的默认值设置为 UTC 格式的 "now"?

Mysql时间错误

java - plsql 远程调试断点不起作用

sql - Instr - 最后一个字符的最后索引

mysql - 从 3 个表中选择所有信息