这样的数据怎样排序,求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
[解决办法]
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
[解决办法]
实在没理解你的逻辑,能把你的应用说说吗?
[解决办法]
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*/
[解决办法]
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
[解决办法]
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 行)*/