如何从没有行的计数返回零值

时间:2017-04-04 09:56:28

标签: sql database sap hana coalesce

以下是我的下面查询,它按每小时计算一次计数和小组

SELECT ADD_SECONDS(start_time,- MINUTE(start_time) * 60  - SECOND(start_time)) as time , to_integer(to_varchar(start_time, 'DD')) as day , count(*) as count FROM SYSTEM.TABLE where start_time >= '2016-01-01 00:00:00' and start_time <= '2016-01-01 23:59:59'  and place_id=1 group by ADD_SECONDS(start_time,- MINUTE(start_time) * 60  - SECOND(start_time)),to_integer(to_varchar(start_time, 'DD')) 
order by ADD_SECONDS(start_time,- MINUTE(start_time) * 60  - SECOND(start_time))

但是在时间段晚上11点到中午12:00我没有计数因此我没有返回行,而是希望它返回0的ow。 因此,当我进行一些搜索时,我发现COALESCE可以提供帮助,所以我尝试了

SELECT COALESCE (( SELECT ADD_SECONDS(start_time,- MINUTE(start_time) * 60  - SECOND(start_time)) as time , to_integer(to_varchar(start_time, 'DD')) as day , count(*) as count FROM SYSTEM.TABLE where start_time >= '2016-01-01 00:00:00' and start_time <= '2016-01-01 23:59:59'  and place_id=1 group by ADD_SECONDS(start_time,- MINUTE(start_time) * 60  - SECOND(start_time)),to_integer(to_varchar(start_time, 'DD')) 
    order by ADD_SECONDS(start_time,- MINUTE(start_time) * 60  - SECOND(start_time))
), 0);

但它也没有用。感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

为了每小时“排一行”,您需要创建独立于您的数据的小时行。这可以通过例如完成。通过使用每小时有一行的辅助表。

SAP HANA提供共享默认辅助。可以用于此目的的表(这些表还通过查找促进日期/时间转换):M_TIME_DIMENSION .... SAP HANA Docu M_TIME_DIMENSION

只需从这些表中选择您感兴趣的时间范围,然后将其与您的汇总实际值连接起来。