在count sql中包含0

时间:2014-11-13 09:37:20

标签: sql count db2

假设我有这张表:

|MY_TABLE|
| ID_COL |
|   1    |
|   1    |
|   2    |
|   2    |

现在我想在这个表上做一个包括零结果的计数查询。 当我尝试运行我的查询时:

Select ID_COL,count(ID_COL) 
from   MY_TABLE 
where ID_COL = '1' or ID_COL = '2' or ID_COL = '100' group by ID_COL

结果只有两行。我想为ID_COL =' 100'显示0。 有没有办法做到这一点?

感谢。

BTW,我正在使用DB2。

1 个答案:

答案 0 :(得分:2)

您必须动态创建一个表,以包含每个ID的记录:

select 1 as id_col union all select 2 union all select 100;

然后您可以从此表中选择ID并显示计数:

select all_ids.id_col, count(my_table.id_col)
from (select 1 as id_col union all select 2 union all select 3) all_ids
left join my_table on my_table.id_col = all_ids.id_col
group by all_ids.id_col;

编辑:现在您使用DB2标记了您的请求:DB2需要一个虚拟表来从中选择一个值。而不是select 1必须写select 1 from sysibm.sysdummy1。完整的查询:

select all_ids.id_col, count(my_table.id_col)
from 
(
  select 1 as id_col from sysibm.sysdummy1
  union all 
  select 2 from sysibm.sysdummy1
  union all 
  select 3 from sysibm.sysdummy1
) all_ids
left join my_table on my_table.id_col = all_ids.id_col
group by all_ids.id_col;