这是现有的一个表,我想实现 以车系的最低价进行车系排序 然后每个车系再按价格从低到高排序 品 牌     车 系        车 型                 报价           
 广州本田  新奥德赛   舒适版                22.98万           
 广州本田  新奥德赛   豪华版                25.68万  
 广州本田  新奥德赛   领秀版                28.28万
 广州本田  飞度       1.5 MT豪华版          10.38万                                    
 广州本田  飞度       1.5 AT豪华版          11.38万                                     
 广州本田  飞度       1.5 AT炫酷运动版      12.98万                                         
 广州本田  飞度       1.3 MT舒适版          8.68万                       
 广州本田  飞度       1.3 AT舒适版          9.68万  
 广州本田  锋范       1.5L 精英版MT         10.68万  
 广州本田  锋范       1.5L 精英版AT         11.68万  
 广州本田  锋范       1.8L 舒适版AT         12.98万 
 广州本田  锋范       1.8L 豪华版AT         14.98万  
 广州本田  锋范       1.5L 舒适版MT         9.68万  
  实现后例如: 广州本田  飞度       1.3 MT舒适版          8.68万
 广州本田  飞度       1.3 AT舒适版          9.68万
 广州本田  飞度       1.5 MT豪华版          10.38万
 广州本田  飞度       1.5 AT豪华版          11.38万
 广州本田  飞度       1.5 AT炫酷运动版      12.98万 
 广州本田  锋范       1.5L 舒适版MT         9.68万  
 广州本田  锋范       1.5L 精英版MT         10.68万  
 广州本田  锋范       1.5L 精英版AT         11.68万  
 广州本田  锋范       1.8L 舒适版AT         12.98万 
 广州本田  锋范       1.8L 豪华版AT         14.98万  
 广州本田  新奥德赛   舒适版                22.98万           
 广州本田  新奥德赛   豪华版                25.68万  
 广州本田  新奥德赛   领秀版                28.28万
                                    
                                     
车系中最低的是8.6万的是飞度 这个车系就排在前面 然后飞度各个型号的按价格从低到高排  请高手帮忙写个SQL语句, 实在是没分了,不好意思了!先谢了                                        
                       

解决方案 »

  1.   

    select * 
    from tb
    order by 品 牌, 车 系,cast(replace(报价,'万','')as dec(38,10))
      

  2.   

    DECLARE @a TABLE(pp VARCHAR(20),cx VARCHAR(20),cxx VARCHAR(20),bj VARCHAR(20))   
     insert @a select '广州本田', '新奥德赛', '舒适版', '22.98万'   
     union all select '广州本田', '新奥德赛', '豪华版', '25.68万'   
     union all select '广州本田', '新奥德赛', '领秀版', '28.28万'
     union all select '广州本田', '飞度','1.5MT豪华版', '10.38万'   
     union all select '广州本田', '飞度','1.3MT舒适版', '8.68万'   
     union all select '广州本田', '飞度','1.3AT舒适版', '9.68万'  
     union all select '广州本田', '锋范','1.5L精英版MT', '10.68万'   
     union all select '广州本田', '锋范','1.5L精英版AT', '11.68万'   
     union all select '广州本田', '锋范','1.8L舒适版AT', '12.98万'  
     union all select '广州本田', '锋范','1.8L豪华版AT', '14.98万'   
     union all select '广州本田', '锋范','1.5L舒适版MT', '9.68万'   
    SELECT * FROM @a  a
    ORDER BY (SELECT MIN(RIGHT('0000'+bj,8)) FROM @a WHERE cx=a.cx)
    ,RIGHT('0000'+bj,8)
    --result
    /*pp                   cx                   cxx                  bj                   
    -------------------- -------------------- -------------------- -------------------- 
    广州本田                 飞度                   1.3MT舒适版             8.68万
    广州本田                 飞度                   1.3AT舒适版             9.68万
    广州本田                 飞度                   1.5MT豪华版             10.38万
    广州本田                 锋范                   1.5L舒适版MT            9.68万
    广州本田                 锋范                   1.5L精英版MT            10.68万
    广州本田                 锋范                   1.5L精英版AT            11.68万
    广州本田                 锋范                   1.8L舒适版AT            12.98万
    广州本田                 锋范                   1.8L豪华版AT            14.98万
    广州本田                 新奥德赛                 舒适版                  22.98万
    广州本田                 新奥德赛                 豪华版                  25.68万
    广州本田                 新奥德赛                 领秀版                  28.28万(所影响的行数为 11 行)
    */
      

  3.   

    不行啊  再帮我看看 刚才那是个例子 实际我的表是 4个表连的 其中 c_price价格 是varchar类型select pp_name,cx_name,xh_name,c_price from pp,cx,xh,carbase where pp.pp_id=cx.pp_id and cx.cx_id=xh.cx_id and carbase.xh_id=xh.xh_id 这是连上表后的  后面怎么加排序  c_price还得转换一下  
    请高手们 再帮我一下 谢谢了
      

  4.   

    select pp_name,cx_name,xh_name,c_price from pp,cx,xh,carbase where pp.pp_id=cx.pp_id and cx.cx_id=xh.cx_id and carbase.xh_id=xh.xh_id  order by 
     pp_name,cx_name,cprice 
      

  5.   

    c_price现在是varchar型 怎么转啊
      

  6.   


    select * from table 
    order by 品牌,车系,车型,报价 asc(desc)
      

  7.   

    cast/convert  都试了 说是转换发能错误
      

  8.   

    说明你的数据有问题,select * 
    from tb
     WHERE ISNUMERIC(cast(replace(报价,'万','')as dec(38,10)))=0查一下就知道了
      

  9.   


    DECLARE @tablebus TABLE(pp VARCHAR(20),cx VARCHAR(20),cxx VARCHAR(20),bj VARCHAR(20))   
     insert @tablebus select '广州本田', '新奥德赛', '舒适版', '22.98万'   
     union all select '广州本田', '新奥德赛', '豪华版', '25.68万'   
     union all select '广州本田', '新奥德赛', '领秀版', '28.28万'
     union all select '广州本田', '飞度','1.5MT豪华版', '10.38万'   
     union all select '广州本田', '飞度','1.3MT舒适版', '8.68万'   
     union all select '广州本田', '飞度','1.3AT舒适版', '9.68万'  
     union all select '广州本田', '锋范','1.5L精英版MT', '10.68万'   
     union all select '广州本田', '锋范','1.5L精英版AT', '11.68万'   
     union all select '广州本田', '锋范','1.8L舒适版AT', '12.98万'  
     union all select '广州本田', '锋范','1.8L豪华版AT', '14.98万'   
     union all select '广州本田', '锋范','1.5L舒适版MT', '9.68万'  select * from @tablebus   order by  cast(replace(bj,'万','') as float)  
    pp                           cx                         cxx                            bj
    -------------------- -------------------- -------------------- --------------------
    广州本田                 飞度                   1.3MT舒适版             8.68万
    广州本田                 飞度                   1.3AT舒适版             9.68万
    广州本田                 锋范                   1.5L舒适版MT            9.68万
    广州本田                 飞度                   1.5MT豪华版             10.38万
    广州本田                 锋范                   1.5L精英版MT            10.68万
    广州本田                 锋范                   1.5L精英版AT            11.68万
    广州本田                 锋范                   1.8L舒适版AT            12.98万
    广州本田                 锋范                   1.8L豪华版AT            14.98万
    广州本田                 新奥德赛                 舒适版                  22.98万
    广州本田                 新奥德赛                 豪华版                  25.68万
    广州本田                 新奥德赛                 领秀版                  28.28万(11 行受影响)
      

  10.   


    select convert(money,ltrim(rtrim(replace(报价,'万',''))))*10000 from tb order by 品 牌, 车 系 
      

  11.   

    select convert(money,ltrim(rtrim(replace(报价,'万',''))))*10000 from tb order by 品 牌, 车 系 
      

  12.   

    select * from 表 order by 品 牌,车 系,报价   
      

  13.   

    DECLARE @a TABLE(pp VARCHAR(20),cx VARCHAR(20),cxx VARCHAR(20),bj VARCHAR(20))   
     insert @a select '广州本田', '新奥德赛', '舒适版', '22.98万'   
     union all select '广州本田', '新奥德赛', '豪华版', '25.68万'   
     union all select '广州本田', '新奥德赛', '领秀版', '28.28万'
     union all select '广州本田', '飞度','1.5MT豪华版', '10.38万'   
     union all select '广州本田', '飞度','1.3MT舒适版', '8.68万'   
     union all select '广州本田', '飞度','1.3AT舒适版', '9.68万'  
     union all select '广州本田', '锋范','1.5L精英版MT', '10.68万'   
     union all select '广州本田', '锋范','1.5L精英版AT', '11.68万'   
     union all select '广州本田', '锋范','1.8L舒适版AT', '12.98万'  
     union all select '广州本田', '锋范','1.8L豪华版AT', '14.98万'   
     union all select '广州本田', '锋范','1.5L舒适版MT', '9.68万'   
    select b.pp,b.cx,b.cxx,b.bj from 
    (select top 100 percent pp,cx,min(bj) as aa from @a
    group by pp,cx
    order by pp,cx) a
    left join @a b on a.pp=b.pp and a.cx=b.cx
    order by a.aa,a.cx,cast(replace(b.bj,'万','') as float)
      

  14.   

    看来还不是怎么简单,再写
    --假设表名为 T,并假设报价格式都是数字+万
    select a.*
    from t a,(select 品牌,车系,min(convert(numeric(12,2),replace(报价,'万',''))) as minbj from t group by 品牌,车系) b
    where a.品牌=b.品牌 and a.车系=b.车系
    order by a.品牌,b.minbj,a.车系,convert(numeric(12,2),replace(a.报价,'万',''))建议录入时报价统一化为数字型
      

  15.   

    谢谢大家的回复,能不能把那个例子 换成我现在用的表  再帮一下啊
    我的表关系是这样的 多表的 其中c_price是VARCHAR型 用了一个转换  能看这个再帮我改下吗 谢谢了  就是
    select pp_name,cx_name,xh_name,convert(float,c_price) from pp,cx,xh,carbase where pp.pp_id=cx.cx_id and cx.cx_id=xh.cx_id and carbase.xh_id=xh.xh_id