【问题标题】:How to get the sum with NVL in oracle?如何在 oracle 中使用 NVL 获得总和?
【发布时间】:2014-02-18 07:01:46
【问题描述】:

请帮忙,我不知道如何使用 NVL 函数获取两个数据的总和并将其显示为两个结果

期望的输出:

 Data, date, total no. of g column, total no. of u column

这里有一些查询:

 SELECT 'Data'
 ||','||To_char(d.dtime_day, 'MM/dd/yyyy')

--我想得到这部分的总和

 ||','||NVL(g.POS, 0)
 ||','||NVL(g.Office, 0)

--我想得到这部分的总和

 ||','||NVL(u.POS, 0)
 ||','||NVL(u.Office, 0)
 FROM owner_dwh.dc_date d 

【问题讨论】:

  • 请出示您的桌子。它是三个不同的表d,g和u吗?它们有什么关系?

标签: sql oracle plsql oracle-sqldeveloper plsqldeveloper


【解决方案1】:

为了得到总和,您想使用 sum 聚合函数和 group by 剩余的选定列:

SELECT 
  'Data'
  ||','||To_char(d.dtime_day, 'MM/dd/yyyy')
  ||','||SUM(NVL(g.POS, 0))
  ||','||SUM(NVL(g.Office, 0))
  ||','||SUM(NVL(u.POS, 0))
  ||','||SUM(NVL(u.Office, 0))
 FROM 
   owner_dwh.dc_date d 
 GROUP BY
   To_char(d.dtime_day, 'MM/dd/yyyy'),
   NVL(u.POS, 0),
   NVL(u.Office, 0)

我怀疑您的问题还有更多,但没有更多信息,这就是我们可以提供的帮助。

另外,应该注意sum() 不需要nvl(),如果null 将被0 替换。 sum 自动执行此操作。我在回答中留下了nvl()

也许,重新阅读你的问题后,你想要的是这个;

SELECT 
  'Data'
  ||','||To_char(d.dtime_day, 'MM/dd/yyyy')
  ||','||NVL(g.POS, 0))
  ||','||NVL(g.Office, 0))
  ||','|| (NVL(g.POS, 0) + NVL (g.Office, 0))
  ||','||NVL(u.POS, 0)
  ||','||NVL(u.Office, 0)
  ||','|| (NVL(u.POS, 0) + NVL (u.Office, 0))
 FROM owner_dwh.dc_date d 

【讨论】:

  • 但我收到一个错误:ORA-00923: FROM 关键字未在预期的位置找到 00923。00000 -“FROM 关键字未在预期的位置找到”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-07
  • 2014-01-23
相关资源
最近更新 更多