我通过查询得到如下的查询结果:
corpCode(企业代码)  corpName(企业名称) ,  finseleCode(财政自编码),taxFeeSum(金额)
1111111111          AAAAAAAA                                     500
2222222222          BBBBBBBB                                     300.00
3333333333          CCCCCCCC                                     500
4444444444          DDDDDDDD                                     2434.56
                    集团公司1(合计)        00001                   800
6666555555          集团公司1下属分公司1    0000100001              200
6666555555          集团公司1下属分公司2    0000100002              600
3424242424          sfsfsfsfsfdsfsf                               1300.00
..........................................................................
..........................................................................
以上的结果一次查询有几万或几十万条记示,现在要根据企业的纳税金额排序,有财政自编码的集团公司作为一个整体进行排名
并取前10名或前100名,如果直接select top 10 * from(上面的结果集) A order by taxFeeSum,则会把
6666555555          集团公司1下属分公司1    0000100001              200 这个分公司的排掉,需要把集团公司作为
一个整体进行排名,既能看到集团公司1的合计,又能看到下属分公司的税收情况,上面的两个分公司 600 + 200 合计为800
请问如何进行排序?

解决方案 »

  1.   

    select corpCode,corpName,finseleCode,taxFeeSum,(case finseleCode when '' then taxFeeSum else (select  taxFeeSum from test where finseleCode=left(finseleCode,1,5))) as myorder
    from test
    order by myorder,finseleCode说明:
    (case finseleCode when '' then taxFeeSum else (select  taxFeeSum from test where finseleCode=left(finseleCode,1,5)))的作用是:若有集团编码则取集团的税收数据,否则就是自己的税收数据
      

  2.   

    corpCode(企业代码)  corpName(企业名称) ,  finseleCode(财政自编码),taxFeeSum(金额) 
    这个就是表结构,上面的结果是查询出来的
      

  3.   

    corpCode(企业代码)  corpName(企业名称) ,  finseleCode(财政自编码),taxFeeSum(金额) 
    1111111111          AAAAAAAA                                    500 
    2222222222          BBBBBBBB                                    300.00 
    3333333333          CCCCCCCC                                    600 
    4444444444          DDDDDDDD                                    2434.56 
                             集团公司1(合计)        00001                  800 
    6666555555          集团公司1下属分公司1    0000100001              200 
    6666555555          集团公司1下属分公司2    0000100002              600 
    3424242424          sfsfsfsfsfdsfsf                              1300.00 上面是查询出来的数据,如果要得到上面交税最大的前3名应得到的结果为:
    4444444444          DDDDDDDD                                    2434.56 
    3424242424          sfsfsfsfsfdsfsf                              1300.00 
                             集团公司1(合计)        00001                  800 
    6666555555          集团公司1下属分公司1    0000100001              200 
    6666555555          集团公司1下属分公司2    0000100002              600请问该如何写sql? 
      

  4.   

    ljluck7687 说的方法是已经存在的表中的数据,这样进行排序,现在问题是我上面的结查是查询出来的结果集,而且记录很多,请问还有其他的方法吗?