取表中字段kl的第一个字符,分组统计
SELECT SUBSTRING(kl,1,1),count(*) as cnt FROM bmk WHERE xzqhdm='0801'  GROUP BY SUBSTRING(kl,1,1) 1、里面的SUBSTRING(kl,1,1)怎样换成别名kdy
2、用一个语句能同时显示出记录总条数吗?如下效果(10是三个数的和,即记录总数):         10
1 3
2 2
3 5

解决方案 »

  1.   

    SELECT SUBSTRING(kl,1,1) as kdy,count(*) as cnt FROM bmk WHERE xzqhdm='0801' GROUP BY SUBSTRING(kl,1,1) with rollup
      

  2.   


    select  SUBSTRING(kl,1,1) as kdy,count(*) as cnt FROM bmk WHERE xzqhdm='0801' GROUP BY SUBSTRING(kl,1,1)  
    union all
    select '' , count(*) from bmk where xzqhdm='0801'
      

  3.   

    如果还有一个字段也参与分组统计,如多一个字段lie:
    SELECT lie,SUBSTRING(kl,1,1) as kdy,count(*) as cnt FROM bmk ...GROUP BYlie, SUBSTRING(kl,1,1)
    这种情况好像不行?
      

  4.   


    select lie, SUBSTRING(kl,1,1) as kdy,count(*) as cnt FROM bmk WHERE xzqhdm='0801' GROUP BY lie, SUBSTRING(kl,1,1)  
    union all
    select '' , count(*) from bmk where xzqhdm='0801'
    怎么不行了?提示什么?
      

  5.   

    提示:
    使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。
      

  6.   

    哎!粗心了。select lie, SUBSTRING(kl,1,1) as kdy,count(*) as cnt FROM bmk WHERE xzqhdm='0801' GROUP BY lie, SUBSTRING(kl,1,1)  
    union all
    select '','' , count(*) from bmk where xzqhdm='0801'