如何在oracle中获取NVL的总和?

时间:2014-02-18 07:01:47

标签: sql oracle plsql oracle-sqldeveloper plsqldeveloper

请帮助,我不知道如何使用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 

1 个答案:

答案 0 :(得分: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不需要sumnvl()会自动执行此操作。我在答案中留下了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

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

{{1}}