首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

这样的数据怎样排序,求SQL语句解决方法

2012-03-18 
这样的数据怎样排序,求SQL语句有表数据:IDF1QtyF31A110012A110013A120024A130035B110046B110057B110058B12

这样的数据怎样排序,求SQL语句
有表数据:
ID F1 Qty F3
1 A1 1 001
2 A1 1 001
3 A1 2 002
4 A1 3 003
5 B1 1 004
6 B1 1 005
7 B1 1 005
8 B1 2 005
9 C1 1 006

要按:F1,Qty进行排序,然后再把具有相同的F3排在最后面,要得到以下结果:
ID F1 Qty F3
3 A1 2 002
4 A1 3 003
5 B1 1 004
9 C1 1 006
1 A1 1 001
2 A1 1 001
6 B1 1 005
7 B1 1 005
8 B1 2 005


[解决办法]

SQL code
select *from tb torder by (case when exists (select 1 from tb where f1=t.f1 and qty=t.qty and id<>t.id) then 1 else 0 end),f1,qty,f3
[解决办法]
实在没理解你的逻辑,能把你的应用说说吗?
[解决办法]
SQL code
declare @T table (ID int,F1 varchar(2),Qty int,F3 varchar(3))insert into @Tselect 1,'A1',1,'001' union allselect 2,'A1',1,'001' union allselect 3,'A1',2,'002' union allselect 4,'A1',3,'003' union allselect 5,'B1',1,'004' union allselect 6,'B1',1,'005' union allselect 7,'B1',1,'005' union allselect 8,'B1',2,'005' union allselect 9,'C1',1,'006'select * from @T t order by (select count(1) from @T where F3=t.F3)/*ID          F1   Qty         F3----------- ---- ----------- ----3           A1   2           0024           A1   3           0035           B1   1           0049           C1   1           0061           A1   1           0012           A1   1           0016           B1   1           0057           B1   1           0058           B1   2           005*/
[解决办法]
SQL code
DECLARE  @T TABLE(ID VARCHAR(20),F1 VARCHAR(20),  Qty VARCHAR(20),F3 VARCHAR(20))INSERT INTO @TSELECT '1','A1','1','001' UNION ALLSELECT '2','A1','1','001' UNION ALLSELECT '3','A1','2','002' UNION ALLSELECT '4','A1','3','003' UNION ALLSELECT '5','B1','1','004' UNION ALLSELECT '6','B1','1','005' UNION ALLSELECT '7','B1','1','005' UNION ALLSELECT '8','B1','2','005' UNION ALLSELECT '9','C1','1','006'SELECT *FROM (SELECT (SELECT COUNT(1) FROM @T WHERE F3=T1.F3 GROUP BY F3) AS ORD, * FROM @T T1) AORDER BY ORD,F1,QTY
[解决办法]
SQL code
create table tb (ID int,F1 varchar(2),Qty int,F3 varchar(3))insert into tbselect 1,'A1',1,'001' union allselect 2,'A1',1,'001' union allselect 3,'A1',2,'002' union allselect 4,'A1',3,'003' union allselect 5,'B1',1,'004' union allselect 6,'B1',1,'005' union allselect 7,'B1',1,'005' union allselect 8,'B1',2,'005' union allselect 9,'C1',1,'006'select m.* from tb m , (select f3 , count(1) cnt from tb group by f3) nwhere m.f3 = n.f3order by n.cnt , m.f1 , m.qtydrop table tb/*ID          F1   Qty         F3   ----------- ---- ----------- ---- 3           A1   2           0024           A1   3           0035           B1   1           0049           C1   1           0061           A1   1           0012           A1   1           0016           B1   1           0057           B1   1           0058           B1   2           005(所影响的行数为 9 行)*/ 

热点排行