用UNION 和CASE对表的排序
来源:互联网 发布:西瓜影音有mac版吗 编辑:程序博客网 时间:2024/05/17 07:17
原表
排序后为
要求对表排序: 排序规则: 1. 按照列 Last排序 2. 数字类型的排在一块,按升或降排序 3. 数字类型小数点保留两位,前面要加$, 如$23.98 4. 字符类型的排在一块,按升或降排序 5. 能够对数字型和字符型的排序 方法一:对5的要求并不灵活,只用UNION SELECT FIRST,ALERT FROM ( SELECT TOP 100 FIRST,('$'+CONVERT(varchar,CONVERT(money,Last,1)) ) AS ALERT FROM NUM WHERE PATINDEX('%[^0-9|.]%',Last)=0 ORDER BY CONVERT(float,LAST) )AS M UNION ALL SELECT FIRST,ALERT FROM ( SELECT TOP 100 FIRST,( Last ) AS ALERT FROM NUM WHERE PATINDEX('%[^0-9|.]%',Last)<>0 ORDER BY ALERT )AS N 注意:必须用UNION ALL, 不能只有UNION, 否则字符和数字型的会交叉在一起 方法二:采用UNION 和CASE,子查询中多添加列来最字符和数字型的排序 SELECT FIRST,ALERT FROM ( SELECT 1 AS YAO,FIRST,('$'+CONVERT(varchar,CONVERT(money,Last,1)) ) AS ALERT FROM NUM WHERE PATINDEX('%[^0-9|.]%',Last)=0 UNION ALL SELECT 2 AS YAO,FIRST,LAST AS ALERT FROM NUM WHERE PATINDEX('%[^0-9|.]%',Last)<>0 ) AS U ORDER BY YAO, CASE WHEN YAO=1 THEN CONVERT(float,SUBSTRING(ALERT,2,LEN(ALERT)-1)) END, CASE WHEN YAO=2 THEN ALERT END 关于UNION 如果UNION 联合的每一个查询有ODER BY则需要加TOP, 上述两个方法中SELECT 出的表后一定要有AS
- 用UNION 和CASE对表的排序
- union联合查询和case when的用法
- union all 和union 的区别,如何让union 排序问题解决
- Oracle Union/Union all 的排序问题
- mysql 多表删除 和UNION 、UNION all的用法
- mocha写测试用例对错误case的评估和测试
- UNION ALL 的排序问题
- UNION 是需要排序的
- sqlserver的特殊写法 case when as与union all
- sql语句中多个union all的case when优化
- UNION 和UNION ALL 的区别
- UNION和UNION ALL的区别
- UNION 和UNION ALL 的区别
- UNION 和UNION ALL 的区别
- union和union all的区别
- union和union all的区别
- UNION 和UNION ALL 的区别
- UNION和UNION ALL的区别
- 数据库之事务和锁
- 我的未来
- 职业生涯中最致命12个想法
- WinCE定制中的大内存支持与永久保存注册表
- 十个笑话让你领悟人生
- 用UNION 和CASE对表的排序
- 奶牛问题
- .net c# 序列化和反序列
- 本经阴符七术(鬼谷子术数),译文奉献给各位朋友
- 系统状态查看工具Sysstat
- Partition Magic 8.0错误大全
- C#序列化技术详解(转)
- 主页无法更改的问题的解决方法
- DIY电脑常见问题解决攻略