日期:2014-05-16  浏览次数:20382 次

分组查询计数为0不显示
程序代码
SELECT COUNT(*),TRADE_ADDRESS
from XQF_QF_DAT_TRADE_11_14
WHERE START_DATE  between #2013-3-12 16:00:00# AND #2013-3-12 16:05:00# and START_ADDRESS='0000000121'
GROUP BY TRADE_ADDRESS ;

目的是为了实现在那段时间内的所有的TRADE_ADDRESS数,本来还有个125为0,显示不出来,求大神指导
------解决方案--------------------
 SELECT
    ISNULL(COUNT(*), 0), TRADE_ADDRESS
 FROM
    XQF_QF_DAT_TRADE_11_14
 WHERE
    START_DATE BETWEEN '#2013-3-12 16:00:00#'
               AND     '#2013-3-12 16:05:00#' AND START_ADDRESS='0000000121'
 GROUP BY
    TRADE_ADDRESS;

------解决方案--------------------
这样的话当然没有,你可以先用你这个查询再union all 没有出现过的那批address,组合出来。
或者试试:
SELECT COUNT(a.*),b.TRADE_ADDRESS
from XQF_QF_DAT_TRADE_11_14 RIGHT JOIN (SELECT DISTINCT TRADE_ADDRESS FROM XQF_QF_DAT_TRADE_11_14) b ON a.TRADE_ADDRESS=b.TRADE_ADDRESS
WHERE START_DATE  between #2013-3-12 16:00:00# AND #2013-3-12 16:05:00# and START_ADDRESS='0000000121'
GROUP BY b.TRADE_ADDRESS ;

这个是sqlserver的,不知道access行不行
------解决方案--------------------
try this,

select iif(isnull(b.qty),0,b.qty),
       a.TRADE_ADDRESS
from
(select distinct TRADE_ADDRESS
 from XQF_QF_DAT_TRADE_11_14) a
left join
(SELECT COUNT(*) as qty,TRADE_ADDRESS
 from XQF_QF_DAT_TRADE_11_14
 WHERE START_DATE  between #2013-3-12 16:00:00# AND #2013-3-12 16:05:00# 
 and START_ADDRESS='0000000121'
 GROUP BY TRADE_ADDRESS) b on a.TRADE_ADDRESS=b.TRADE_ADDRESS