日期:2014-05-19  浏览次数:20452 次

请教一个SQL的简单排序问题。
原序:
ID         SID         CID               NAME
14         1         000100             新闻资讯
15         3         000101             政务公开
16         2         000102             办事指南
99         0         00010200         文化市场类
100       1         00010201         文化艺术类
17         4         000103             群众文化
18         5         000104             机关建设
138       0         000105             省厅概况

新序:
ID           SID     CID                   NAME
138         0         000105             省厅概况
14           1         000100             新闻资讯
16           2         000102             办事指南
99           0         00010200         文化市场类
100         1         00010201         文化艺术类
15           3         000101             政务公开
17           4         000103             群众文化
18           5         000104             机关建设

难点在于:如果根据CID为主排序,则无法对SID进行排序;而如果根据SID为主排序,则又无法对CID进行排序。

------解决方案--------------------
select * from 表 order by SID,CID
------解决方案--------------------
没看明白 LZ的排序规则
------解决方案--------------------
faint,

select * from table_Pqs order by SID,CID 按照字段前后顺序规则排序


------解决方案--------------------
新序也没有规则
------解决方案--------------------
明确的告诉你没有办法呀!!
------解决方案--------------------
create funcation getsid(@cid varchar(8))
returns int
as
begin
decale @sid int
if len(rtrim(@cid))=8
select @sid=sid from 表 where cid=left(@cid,6)
else
select @sid=sid from 表
return @sid
end
go

select * from 表 order by dbo.getsid(cid),len(rtrim(cid)),sid
------解决方案--------------------
上面第一句笔误
create function getsid(@cid varchar(8))
------解决方案--------------------
create function getsid(@cid varchar(8))
returns int
as
begin
declare @sid int
if len(rtrim(@cid))=8