本帖最后由 szlixiaolong 于 2015-03-09 10:07:20 编辑

解决方案 »

  1.   

    DECLARE @SQL VARCHAR(8000)--SQL2005+可以用VARCHAR(MAX)
    SET @SQL='SELECT 门店名称'
    SELECT @SQL=@SQL+',SUM(CASE WHEN CONVERT(VARCHAR(6),时间,112)='''+SaleTime+'''THEN 1 END)['
    +LEFT(SaleTime,4)+'年'+CAST(RIGHT(SaleTime,2)+0 AS VARCHAR(2))+'月份单号总计]'
    FROM(SELECT CONVERT(VARCHAR(6),时间,112)SaleTime FROM 销售明细表 GROUP BY CONVERT(VARCHAR(6),时间,112))T
    ORDER BY SaleTime
    SET @SQL=@SQL+'FROM 销售明细表 GROUP BY 门店名称'
    EXEC(@SQL)
      

  2.   

    数据库是SQL2000,能否再写一下通俗一点的语句?
      

  3.   

    2000只能用CASE WHEN 啊,还要怎么通俗呢,2005的话可以用PIVOT
      

  4.   

    你的月份可以写死吗如果可以写死,就不用动态生成SQL了另外SQL2000的行转列只能是CASE
      

  5.   

    pos_t_payflow 是销售明细表,bi_t_branch_info 是门店名称表。
    统计2014年3月1号 到2015年3月1号的数据。
      

  6.   

    这是我写的SQL:select a.branch_name,  ( CASE left(b.oper_date,7) WHEN '2014-03' then  count(b.flow_no)  ELSE  1 END ) AS  '2014年3月',
      ( CASE left(b.oper_date,7) when '2014-04' then    count(b.flow_no)  ELSE  1 END ) AS  '2014年4月',
      ( CASE left(b.oper_date,7)  when '2014-05' then    count(b.flow_no) ELSE  1 END ) AS  '2014年5月',
      ( CASE  left(b.oper_date,7) when '2014-06' then    count(b.flow_no)  ELSE  1 END ) AS  '2014年6月',
      ( CASE left(b.oper_date,7)   when '2014-07' then    count(b.flow_no) ELSE  1 END ) AS  '2014年7月',
      ( CASE left(b.oper_date,7) when '2014-08' then    count(b.flow_no)   ELSE  1 END ) AS   '2014年8月',
      ( CASE left(b.oper_date,7)  when '2014-09' then    count(b.flow_no)  ELSE  1 END ) AS  '2014年9月',
      ( CASE  left(b.oper_date,7)  when '2014-10' then    count(b.flow_no)   ELSE  1 END ) AS '2014年10月',
      ( CASE  left(b.oper_date,7) when  '2014-11' then    count(b.flow_no) ELSE  1 END ) AS   '2014年11月',
      ( CASE left(b.oper_date,7)  when '2014-12' then    count(b.flow_no)   ELSE  1 END ) AS '2014年12月',
      ( CASE  left(b.oper_date,7)  when '2015-01' then    count(b.flow_no)  ELSE  1 END ) AS '2015年1月',
      ( CASE  left(b.oper_date,7)  when '2015-02' then    count(b.flow_no)  ELSE  1 END ) AS '2015年2月',
      ( CASE  left(b.oper_date,7)  when '2015-03' then    count(b.flow_no)  ELSE  1 END ) AS '2015年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-02 23:59:59'  and a.branch_no=b.branch_no  
    group by 
    a.branch_name,b.oper_date
      

  7.   

    你这么说,没人知道你要干嘛pos_t_payflow 是销售明细表,bi_t_branch_info 是门店名称表。这两个表的表结构呢 字段名? 怎么关联?
      

  8.   

    select  b.flow_no,a.branch_name,  ( CASE left(b.oper_date,7) WHEN '2014-03' then  count(b.flow_no)  ELSE  1 END ) AS  '2014年3月',
      ( CASE left(b.oper_date,7) when '2014-04' then    count(b.flow_no)  ELSE  1 END ) AS  '2014年4月',
      ( CASE left(b.oper_date,7)  when '2014-05' then    count(b.flow_no) ELSE  1 END ) AS  '2014年5月',
      ( CASE  left(b.oper_date,7) when '2014-06' then    count(b.flow_no)  ELSE  1 END ) AS  '2014年6月',
      ( CASE left(b.oper_date,7)   when '2014-07' then    count(b.flow_no) ELSE  1 END ) AS  '2014年7月',
      ( CASE left(b.oper_date,7) when '2014-08' then    count(b.flow_no)   ELSE  1 END ) AS   '2014年8月',
      ( CASE left(b.oper_date,7)  when '2014-09' then    count(b.flow_no)  ELSE  1 END ) AS  '2014年9月',
      ( CASE  left(b.oper_date,7)  when '2014-10' then    count(b.flow_no)   ELSE  1 END ) AS '2014年10月',
      ( CASE  left(b.oper_date,7) when  '2014-11' then    count(b.flow_no) ELSE  1 END ) AS   '2014年11月',
      ( CASE left(b.oper_date,7)  when '2014-12' then    count(b.flow_no)   ELSE  1 END ) AS '2014年12月',
      ( CASE  left(b.oper_date,7)  when '2015-01' then    count(b.flow_no)  ELSE  1 END ) AS '2015年1月',
      ( CASE  left(b.oper_date,7)  when '2015-02' then    count(b.flow_no)  ELSE  1 END ) AS '2015年2月',
      ( CASE  left(b.oper_date,7)  when '2015-03' then    count(b.flow_no)  ELSE  1 END ) AS '2015年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<= '2015-03-01 23:59:59'  and a.branch_no=b.branch_no  group by 
    a.branch_name,b.flow_no,b.oper_date如何聚合一下?请指教。
      

  9.   


    pos_t_payflow  表结构:flow_no代表单号,branch_no代表门店编号,oper_date代表操作时间。
    bi_t_branch_info表结构:branch_no代表门店编号,branch_name代表门店名称。门店名称        单号                                            时间
    A门店          030214030100014                     2014-03-01 10:04:54:376
    B门店         040214030200014                     2014-03-02 10:04:54:376
    C门店         050214030300014                      2014-03-03 10:04:54:376
    A门店         030214040100015                      2014-04-01 10:04:54:376
    B门店         040214040200015                     2014-04-02 10:04:54:376
    C门店         050214040300015                    2014-04-03 10:04:54:376
    A门店          030214030100015                     2014-03-01 10:05:54:376
    B门店         040214030200015                     2014-03-02 10:05:54:376
    C门店         050214030300015                      2014-03-03 10:05:54:376
    A门店         030214040100016                     2014-04-01 10:05:54:376
    B门店         040214040200016                     2014-04-02 10:05:54:376
    C门店         050214040300016                    2014-04-03 10:05:54:376
    A门店         030215040100016                     2015-03-01 10:05:54:376
    B门店         040215040200016                     2015-03-02 10:05:54:376
    C门店         050215040300016                    2015-03-03 10:05:54:376最终需要实现的数据统计如下:
    门店名称      2014年3月份单号总计       2014年4月份单号总计     2014年5月份单号总计 2014年6月份单号总计 2014年7月份单号总计  2014年8月份单号总计  2014年9月份单号总计  2014年10月份单号总计  2014年11月份单号总计  2014年12月份单号总计  2015年1月份单号总计 2015年2月份单号总计  2015年3月份单号总计  
    A门店           2                                               2                                                               1
    B门店            2                                               2                                                               1
    C门店            2                                                2                                                            1
      

  10.   

    就是加个SUM 或COUNT之类,但是你ELSE 1要去掉
    类似这样SELECT 门店名称
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),时间,112)='201403'THEN 1 END)[2014年3月份单号总计]
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),时间,112)='201404'THEN 1 END)[2014年4月份单号总计]
    ,SUM(CASE WHEN CONVERT(VARCHAR(6),时间,112)='201504'THEN 1 END)[2015年4月份单号总计]
    FROM 销售明细表
    GROUP BY 门店名称
      

  11.   

    按照你的提示,我写了一下这个SQL:
    SELECT distinct b.flow_no, 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)='201505'THEN 1 END)[2015年5月份单号总计]
    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<= '2015-03-01 23:59:59'  and a.branch_no=b.branch_no  
    group by 
    b.flow_no,a.branch_name,b.oper_date结果会把相同单号全部统计出来了,如下:A门店          030214030100014                     2014-03-01 10:04:54:376
    A门店          030214030100014                      2014-03-01 10:04:54:376我只想只统计一个相同单号的总和就可以了。
                              
      

  12.   

    我没明白你同单什么意思,你试下这种方式COUNT DISTINCTSELECT 门店名称
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),时间,112)='201403'THEN 单号 END)[2014年3月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),时间,112)='201404'THEN 单号 END)[2014年4月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),时间,112)='201504'THEN 单号 END)[2015年4月份单号总计]
    FROM 销售明细表 GROUP BY 门店名称
      

  13.   


    当前的语句只能统计每个单号的合计数。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
      

  14.   

    pos_t_payflow  表结构:flow_no代表单号,branch_no代表门店编号,oper_date代表操作时间。
    bi_t_branch_info表结构:branch_no代表门店编号,branch_name代表门店名称。门店名称        单号                                            时间
    A门店          030214030100014                     2014-03-01 10:04:54:376
    B门店         040214030200014                     2014-03-02 10:04:54:376
    C门店         050214030300014                      2014-03-03 10:04:54:376
    A门店         030214040100015                      2014-04-01 10:04:54:376
    B门店         040214040200015                     2014-04-02 10:04:54:376
    C门店         050214040300015                    2014-04-03 10:04:54:376
    A门店          030214030100015                     2014-03-01 10:05:54:376
    B门店         040214030200015                     2014-03-02 10:05:54:376
    C门店         050214030300015                      2014-03-03 10:05:54:376
    A门店         030214040100016                     2014-04-01 10:05:54:376
    B门店         040214040200016                     2014-04-02 10:05:54:376
    C门店         050214040300016                    2014-04-03 10:05:54:376
    A门店         030215040100016                     2015-03-01 10:05:54:376
    B门店         040215040200016                     2015-03-02 10:05:54:376
    C门店         050215040300016                    2015-03-03 10:05:54:376最终需要实现的数据统计如下:
    门店名称      2014年3月份单号总计       2014年4月份单号总计     2014年5月份单号总计 2014年6月份单号总计 2014年7月份单号总计  2014年8月份单号总计  2014年9月份单号总计  2014年10月份单号总计  2014年11月份单号总计  2014年12月份单号总计  2015年1月份单号总计 2015年2月份单号总计  2015年3月份单号总计  
    A门店           2                                               2                                                               1
    B门店            2                                               2                                                               1
    C门店            2                                                2                                                            1 
      

  15.   

    类似这样
    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如果和你的表名列名都对上了,这次一个字都不用改
    有什么问题,引用我的回复,这样我才看得到
      

  16.   

    类似这样
    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行以及最终统计出来。
      

  17.   

    执行你写的语句,结果会把相同单号全部统计出来了,如下:A门店          030214030100014                     2014-03-01 10:04:54:376
    A门店          030214030100014                      2014-03-01 10:04:54:376单号数量是2。按照以下的SQL语句,重复的单号只统计了1个是正确,但是只能统计每个单号的合计数,不能统计相应门店的相应月份的合计单号数量。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 
      

  18.   

    SELECT a.branch_name
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN b.flow_no END)[2014年3月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201404'THEN b.flow_no END)[2014年4月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201405'THEN b.flow_no END)[2014年5月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201406'THEN b.flow_no END)[2014年6月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201407'THEN b.flow_no END)[2014年7月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201408'THEN b.flow_no END)[2014年8月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201409'THEN b.flow_no END)[2014年9月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201410'THEN b.flow_no END)[2014年10月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201411'THEN b.flow_no END)[2014年11月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201412'THEN b.flow_no END)[2014年12月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201401'THEN b.flow_no END)[2014年1月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201402'THEN b.flow_no END)[2015年2月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN b.flow_no 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之前我搞错了但有个地方你需要理解清楚 GROUP BY的意思,不能把b.flow_no,b.oper_date 也加进来,那就形似神非了,不知道在统计什么了
      

  19.   

    没明白,全为0的是什么然后总合计的话,在这地方,加这么一句    ,COUNT(DISTINCT b.flow_no)[总合计]
    FROM bi_t_branch_info a
      

  20.   

    全为0,是指有些门店根本没有任何销售数据,所以统计出来的一行,全为0,,COUNT(DISTINCT b.flow_no)[总合计],这行是统计所有门店的,我想分别统计相应门店的所有月份的总合计。
      

  21.   

    全为0,是指有些门店根本没有任何销售数据,所以统计出来的一行,全为0,,COUNT(DISTINCT b.flow_no)[总合计],这行是统计所有门店的,我想分别统计相应门店的所有月份的总合计。
      

  22.   

    http://img.bbs.csdn.net/upload/201503/11/1426038651_252445.jpg
      

  23.   


    我加了COUNT(DISTINCT b.flow_no)[总合计]之后,发现统计出来的是相应门店所有的单号总计,而不是这个月的单号总计。
      

  24.   

    我想,你数据表还有其它个月的数据SELECT a.branch_name
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN b.flow_no END)[2014年3月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201404'THEN b.flow_no END)[2014年4月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201405'THEN b.flow_no END)[2014年5月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201406'THEN b.flow_no END)[2014年6月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201407'THEN b.flow_no END)[2014年7月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201408'THEN b.flow_no END)[2014年8月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201409'THEN b.flow_no END)[2014年9月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201410'THEN b.flow_no END)[2014年10月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201411'THEN b.flow_no END)[2014年11月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201412'THEN b.flow_no END)[2014年12月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201501'THEN b.flow_no END)[2014年1月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201502'THEN b.flow_no END)[2015年2月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201503'THEN b.flow_no END)[2015年3月份单号总计]
    ,COUNT(DISTINCT b.flow_no)[总合计]
    FROM bi_t_branch_info a
    JOIN pos_t_payflow b ON a.branch_no=b.branch_no
    WHERE b.oper_date BETWEEN '20140301'AND'20150331'
    GROUP BY a.branch_name
      

  25.   

    我想,你数据表还有其它个月的数据SELECT a.branch_name
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN b.flow_no END)[2014年3月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201404'THEN b.flow_no END)[2014年4月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201405'THEN b.flow_no END)[2014年5月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201406'THEN b.flow_no END)[2014年6月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201407'THEN b.flow_no END)[2014年7月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201408'THEN b.flow_no END)[2014年8月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201409'THEN b.flow_no END)[2014年9月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201410'THEN b.flow_no END)[2014年10月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201411'THEN b.flow_no END)[2014年11月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201412'THEN b.flow_no END)[2014年12月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201501'THEN b.flow_no END)[2014年1月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201502'THEN b.flow_no END)[2015年2月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201503'THEN b.flow_no END)[2015年3月份单号总计]
    ,COUNT(DISTINCT b.flow_no)[总合计]
    FROM bi_t_branch_info a
    JOIN pos_t_payflow b ON a.branch_no=b.branch_no
    WHERE b.oper_date BETWEEN '20140301'AND'20150331'
    GROUP BY a.branch_name我想,你数据表还有其它个月的数据SELECT a.branch_name
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201403'THEN b.flow_no END)[2014年3月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201404'THEN b.flow_no END)[2014年4月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201405'THEN b.flow_no END)[2014年5月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201406'THEN b.flow_no END)[2014年6月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201407'THEN b.flow_no END)[2014年7月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201408'THEN b.flow_no END)[2014年8月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201409'THEN b.flow_no END)[2014年9月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201410'THEN b.flow_no END)[2014年10月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201411'THEN b.flow_no END)[2014年11月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201412'THEN b.flow_no END)[2014年12月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201501'THEN b.flow_no END)[2014年1月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201502'THEN b.flow_no END)[2015年2月份单号总计]
    ,COUNT(DISTINCT CASE WHEN CONVERT(VARCHAR(6),b.oper_date,112)='201503'THEN b.flow_no END)[2015年3月份单号总计]
    ,COUNT(DISTINCT b.flow_no)[总合计]
    FROM bi_t_branch_info a
    JOIN pos_t_payflow b ON a.branch_no=b.branch_no
    WHERE b.oper_date BETWEEN '20140301'AND'20150331'
    GROUP BY a.branch_name可否把整行为0的屏蔽?