数据库高手请入,解决了,再送300分......

toperscj 2003-09-29 09:18:57
我需要对数据库中的一个数据表作统计查询。
查询的要求是:按照几个字段进行排序,但是有个前提:
举个例子来说:表中的一个数据子段为Style(不在排序子段中),
他可以有三个值100,200,300。现在需要Style值为200的排在最前面。100的跟在
200后面,300在最后。各自进行排序。然后显示结果为:200的自动排序,100的自动排序,300自动排序。
各位XDJM.请帮忙啊,俺火烧屁股了......
...全文
43 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
GRANT_Z 2003-09-30
  • 打赏
  • 举报
回复
things(平)(凡) 说得没错。
whitetiger8 2003-09-29
  • 打赏
  • 举报
回复
things(平)(凡) 的做法是正确的
things 2003-09-29
  • 打赏
  • 举报
回复
第二种方法主要是注意CASE的使用
select field1, field2, ...fieldn,
GroupId =
CASE
WHEN style=200 THEN 0
WHEN style=100 THEN 1
WHEN style=300 THEN 2
END
order by GroupId, field1, field2

or

select field1, field2, ...fieldn,
CASE style
WHEN 200 THEN 0
WHEN 100 THEN 1
WHEN 300 THEN 2
END
order by style, field1, field2

没有SQL数据库,都是想当然的,自己试试吧
toperscj 2003-09-29
  • 打赏
  • 举报
回复
如果不用临时表,单独用SQL语句如何操作呢?请教高手们,楼上的继续啊
大聪 2003-09-29
  • 打赏
  • 举报
回复
建立3个视图啊
按Style的值;
create view v1 as select * from table1 where Style=200;
create view v2 as select * from table1 where Style=100;
create view v3 as select * from table1 where Style=300;
select * from v1 ,v2,v3 where v1.id=v2.id(+) and v2.id=v3.id(+) order by v1.id,v2.id,v3.id;
其它的你自己组和吧,
用视图可以搞定的,你自己在想想
things 2003-09-29
  • 打赏
  • 举报
回复
1.
select * from table where style = 200 order by field1, field2
union
select * from table where style <> 200 order by field1, field2

2.
select field1, field2, ...fieldn,
GroupId =
CASE style
WHEN 200 THEN 0
ELSE 1
END
order by GroupId, field1, field2

如果不认 GroupId ,加上单引号试试。没有SQLSERVER,没有试验。
linzhisong 2003-09-29
  • 打赏
  • 举报
回复
sql server 里

先建立个临时表,有个id 是自增的。

先把style的值相等的插入到临时表,

然后把剩下的数据排好序插入,然后order by id 差不多就没问题了。

好运!

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧