关于group by按某种格式显示

demonapple 2011-05-13 03:36:20
数据库中有一些数据
select diqu,count(*) from tb group by diqu

用group by按照地区来排列
diqu count(*)
全国 300
安徽 10
江苏 20
河南 20
河北 40

现在我想按照固定的排列显示
比如按
河南
安徽
河北
江苏
全国
来显示
sql能实现这样的排列吗?
...全文
86 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
304的的哥 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 demonapple 的回复:]
数据库中有一些数据
SQL code
select diqu,count(*) from tb group by diqu

用group by按照地区来排列
diqu count(*)
全国 300
安徽 10
江苏 20
河南 20
河北 40

现在我想按照固定的排列显示
比如按
河南
安徽
河北
江苏
全国
来显示
sql能实现这样的排列吗?
[/Quote]

--用decode()函数进行指定排序
select diqu,count(*)
from tb
group by diqu
order by decode(diqu,
'河南',1,
'安徽',2,
'河北',3
'江苏',4,
'全国',5
)
/
iqlife 2011-05-13
  • 打赏
  • 举报
回复
Oracle9i之前,中文是按照二进制编码进行排序的。但oracle9以来,oracle的NLSSORT排序还是挻有意思的,它可以用来进行语言排序,不影响当前会话;例如按照拼音、部首、笔画排序功能只需设置NLS_SORT值 SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序
SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序
SCHINESE_PINYIN_M 按照拼音排序
Demo:
SELECT * FROM 产品 ORDER BY NLSSORT(产品名称,'NLS_SORT = SCHINESE_RADICAL_M');
SELECT * FROM 产品 ORDER BY NLSSORT(产品名称,'NLS_SORT = SCHINESE_STROKE_M');
SELECT * FROM 产品 ORDER BY NLSSORT(产品名称,'NLS_SORT = SCHINESE_PINYIN_M');



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/rockywu/archive/2008/04/17/2300556.aspx

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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