又来格式化的问题.这种问题sql很弱的

解决方案 »

  1.   

    sql的功能在于数据处理,而不是格式化
      

  2.   

    跟zjcxc学习,这种问题应该在前台实现.
      

  3.   

    select 省份=case when grouping(city)=1 then province else '' end
    ,城市=case when grouping(city)=1 then ''
    else case when grouping(area)=1 then city else '' end end
    ,area=case when grouping(city)=1 then ''
    else case when grouping(area)=1 then '' else area end end
    ,buy_amount=sum(buy_amount)
    ,grouping(province),grouping(city),grouping(area)
    from 表 
    group by province,city,area
    with rollup
    having grouping(province)=0 and (grouping(area)=1 or area<>'')
    order by province,grouping(city) desc,city,grouping(area) desc
      

  4.   

    --写多了几个字段,改:--查询
    select 省份=case when grouping(city)=1 then province else '' end
    ,城市=case when grouping(city)=1 then ''
    else case when grouping(area)=1 then city else '' end end
    ,area=case when grouping(city)=1 then ''
    else case when grouping(area)=1 then '' else area end end
    ,buy_amount=sum(buy_amount)
    from 表 
    group by province,city,area
    with rollup
    having grouping(province)=0 and (grouping(area)=1 or area<>'')
    order by province,grouping(city) desc,city,grouping(area) desc
      

  5.   

    --处理示例--测试数据
    create table 表(province varchar(10),city varchar(10),area varchar(10),buy_amount int)
    insert 表 select '吉林省','长春市','',    500
    union all select '吉林省','吉林市','',    500
    union all select '广东省','深圳市','福田',700
    union all select '广东省','深圳市','罗湖',200
    union all select '广东省','深圳市','宝安',100
    union all select '广东省','广州市','',500
    union all select '广东省','惠州市','',500
    go--查询
    select 省份=case when grouping(city)=1 then province else '' end
    ,城市=case when grouping(city)=1 then ''
    else case when grouping(area)=1 then city else '' end end
    ,area=case when grouping(city)=1 then ''
    else case when grouping(area)=1 then '' else area end end
    ,buy_amount=sum(buy_amount)
    from 表 
    group by province,city,area
    with rollup
    having grouping(province)=0 and (grouping(area)=1 or area<>'')
    order by province,grouping(city) desc,city,grouping(area) desc
    go--删除测试
    drop table 表/*--测试结果
    省份         城市         area       buy_amount  
    ---------- ---------- ---------- ----------- 
    广东省                              2000
               广州市                   500
               惠州市                   500
               深圳市                   1000
                          宝安         100
                          福田         700
                          罗湖         200
    吉林省                              1000
               长春市                   500
               吉林市                   500(所影响的行数为 10 行)
    --*/
      

  6.   

    TO:zjcxc(: 邹建 :)太感谢了!偶要好好学习。