当前的语句只能统计每个单号的合计数。SELECT  b.flow_no, a.branch_name,
    sum(distinct CASE WHEN CONVERT(VARCHAR(6), b.oper_date,112)='201403'THEN 1 END)[2014年3月份单号总计]
FROM dbo.pos_t_payflow b,bi_t_branch_info a where b.oper_date>= '2014-03-01 00:00:00'  
                                       And b.oper_date<= '2014-03-01 23:59:59'  and a.branch_no=b.branch_no  
group by 
b.flow_no,a.branch_name,b.oper_date 现在还是不能统计相应月份所有单号的汇总数。

解决方案 »

  1.   

    SELECT a.branch_name
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN 1 END)[2014年3月份单号总计]
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201404'THEN 1 END)[2014年4月份单号总计]
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201405'THEN 1 END)[2014年5月份单号总计]
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201406'THEN 1 END)[2014年6月份单号总计]
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201407'THEN 1 END)[2014年7月份单号总计]
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201408'THEN 1 END)[2014年8月份单号总计]
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201409'THEN 1 END)[2014年9月份单号总计]
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201410'THEN 1 END)[2014年10月份单号总计]
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201411'THEN 1 END)[2014年11月份单号总计]
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201412'THEN 1 END)[2014年12月份单号总计]
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201401'THEN 1 END)[2014年1月份单号总计]
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201402'THEN 1 END)[2015年2月份单号总计]
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN 1 END)[2015年3月份单号总计]
    FROM bi_t_branch_info a
    JOIN pos_t_payflow b ON a.branch_no=b.branch_no
    GROUP BY a.branch_name你好,我把你的语句执行了一下,数据统计了所有单号,而不是把重复的单号保留1行以及最终统计出来。