在Oracle的一个表中显示多个总计

时间:2009-05-13 22:39:25

标签: oracle

我正在尝试使用以下查询计算名为DRAWING的表中的总行数: 选择字段,平台,计数(doc_id)作为总计,从绘图分组,字段,平台;

但我还需要显示每个平台的附件/非附件总数

SQL:

从图形中选择字段,平台,计数(doc_id),其中file_bin不是按字段,平台分别为空;

从图形中选择字段,平台,计数(doc_id)为non_attached,其中file_bin为null by field,platform;

有没有办法将3个值组合成视图? 例如 Field,Platform,Total,Attached,Non_attached

3 个答案:

答案 0 :(得分:1)

试试这个:

select 
  field, 
  platform, 
  count(doc_id) as total,
  sum(iif(file_bin is null, 1, 0)) as attached,
  sum(iif(file_bin is not null, 1, 0)) as non_attached
from drawing 
where doc_id is not null 
group by field, platform

答案 1 :(得分:0)

感谢Douglas Tosi的建议,我设法使用案例方法。

选择字段,   平台,   count(doc_id)为总数,   SUM(CASE    当file_bin为null时为1    当file_bin不为null时为0   END)如附,   SUM(CASE    当file_bin为null时为0    当file_bin不为null时为1   END)作为绘图中的non_attached,其中doc_id不为null 按字段分组,平台

完美!!

再次感谢道格拉斯

答案 2 :(得分:0)

我会使用decode而不是case,不知道什么表现更好(未经测试):

select field
,      platform
,      count(doc_id) as total
,      sum(decode(file_bin,null,1,0)) attached 
,      sum(decode(file_bin,null,0,1)) non_attached
from   drawing 
where  doc_id is not null 
group by field,platform