这是现有的一个表,我想实现 以车系的最低价进行车系排序 然后每个车系再按价格从低到高排序 品 牌 车 系 车 型 报价
广州本田 新奥德赛 舒适版 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语句, 实在是没分了,不好意思了!先谢了
广州本田 新奥德赛 舒适版 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语句, 实在是没分了,不好意思了!先谢了
from tb
order by 品 牌, 车 系,cast(replace(报价,'万','')as dec(38,10))
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 行)
*/
请高手们 再帮我一下 谢谢了
pp_name,cx_name,cprice
select * from table
order by 品牌,车系,车型,报价 asc(desc)
from tb
WHERE ISNUMERIC(cast(replace(报价,'万','')as dec(38,10)))=0查一下就知道了
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 行受影响)
select convert(money,ltrim(rtrim(replace(报价,'万',''))))*10000 from tb order by 品 牌, 车 系
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)
--假设表名为 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.报价,'万',''))建议录入时报价统一化为数字型
我的表关系是这样的 多表的 其中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