DB2 SELECT COUNT,如果为NULL则默认为0

时间:2014-11-07 15:06:17

标签: database count db2

目标

我正在尝试从一个表中选择一个用户ID,并从DB2中的另一个表中选择一个关联项的计数。我试图在SSIS中执行此查询以将数据导入SQL Server数据库,在那里我将对数据执行其他转换过程。我提到SSIS不是因为我认为它是问题的一部分,而是仅仅是为了背景信息。我很确定问题在于我缺乏DB2经验。我的背景是在SQL Server中,我是DB2的新手。

问题

当(我假设)计数为0时出现问题。当我在DB2命令编辑器中执行查询时,它只返回一个空行。我希望它至少返回用户ID,然后只有一个空白字段用于计数,而是整行是空白的。这会导致我的SSIS包出现问题,它试图在没有数据的情况下进行大量插入。

同样,很多这是假设,因为我没有使用DB2 Command Editor或DB2,但如果我稍微打开日期,我将获得预期的结果(用户ID和计数)

我已经尝试将计数包装在COALESCE()函数中,但这并没有解决问题。

QUERY

SELECT a.user_id, COUNT(DISTINCT b.item_number) as Count
FROM TABLE_A a
LEFT OUTER JOIN TABLE_B b
ON a.PRIMARY_KEY = b.PRIMARY_KEY
WHERE a.user_id = '1234'
AND b.DATE_1 >= '01/01/2013'
AND b.DATE_1 <= '01/05/2013'
AND b.DATE_2 >= '01/01/2013'
AND b.DATE_2 <= '12/23/2014'
AND a.OTHER_FILTER_FIELD = 'ABC'
GROUP BY a.user_id

1 个答案:

答案 0 :(得分:0)

将字段包裹在COALESCE()

 COUNT(DISTINCT COALESCE(b.item_number,0))

还要确保

 WHERE a.user_id = '1234'

存在于TABLE_A中。如果没有用户1234,则查询结果不会得到任何结果。