史上最长的SQL+case when用法
2012-11-02 15:49
204 查看
[align=left] [/align]
[align=left][/align]
[align=left]case when[/align]
[align=left]主要实现if-then-else的功能[/align]
[align=left]SELECT col1, col2,
CASE
WHEN col3 > 1 AND col3 <2
THEN ’1′
WHEN col3 > 2 AND col3 <3
THEN ’2′
WHEN col3 > 3 AND col3 <4
THEN ’3′
ELSE ’4′
END mylevel
FROM table1[/align]
[align=left]注意点:1、以CASE开头,以END结尾
2、分支中WHEN 后跟条件,THEN为显示结果
3、ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加
4、END 后跟别名[/align]
[align=left]高级一点的用法[/align]
[align=left]把case when作为条件 计算。这个我真的没有想到还可以这样,以后看东西要仔细了[/align]
[align=left] [/align]
[align=left]view source [/align]
[align=left]print?[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
[align=left][/align]
[align=left]case when[/align]
[align=left]主要实现if-then-else的功能[/align]
[align=left]SELECT col1, col2,
CASE
WHEN col3 > 1 AND col3 <2
THEN ’1′
WHEN col3 > 2 AND col3 <3
THEN ’2′
WHEN col3 > 3 AND col3 <4
THEN ’3′
ELSE ’4′
END mylevel
FROM table1[/align]
[align=left]注意点:1、以CASE开头,以END结尾
2、分支中WHEN 后跟条件,THEN为显示结果
3、ELSE 为除此之外的默认情况,类似于高级语言程序中switch case的default,可以不加
4、END 后跟别名[/align]
[align=left]高级一点的用法[/align]
[align=left]把case when作为条件 计算。这个我真的没有想到还可以这样,以后看东西要仔细了[/align]
[align=left] [/align]
[align=left]view source [/align]
[align=left]print?[/align]
[align=left]1[/align] | [align=left]select b.spbs, sum(b.sfsl) S, [/align] |
[align=left]2[/align] | [align=left]sum(case when substr(b.zb_id, 0, 1) = 'T' then b.sfsl else 0 end) 淘宝, [/align] |
[align=left]3[/align] | [align=left]sum(case when substr(b.zb_id, 0, 1) = 'F' then b.sfsl else 0 end) 分销, [/align] |
[align=left]4[/align] | [align=left]sum(case when substr(b.zb_id, 0, 1) = 'E' OR substr(b.zb_id, 0, 1) = 'Y' then b.sfsl else 0 end) 网站订单数, [/align] |
[align=left]5[/align] | [align=left]count(case when substr(b.zb_id, 0, 1) = 'E' OR substr(b.zb_id, 0, 1) = 'Y' then b.zb_id end) 网站订单笔 [/align] |
[align=left]6[/align] | [align=left]from gw_dzyddzb a left join gw_dzyddmxb b on a.id = b.zb_id where a.ydrq > sysdate - 1 [/align] |
[align=left]7[/align] | [align=left] [/align] |
[align=left]8[/align] | [align=left]group by spbs[/align] |
相关文章推荐
- ZOJ 2432 Greatest Common Increasing Subsequence(最长公共上升子序列+路径打印)
- 经典算法——最长回文子串
- 求平面集内距离最长 (凸包+旋转卡壳)
- hdu 1423 最长公共上升子序列
- 后缀求可重叠最长重复子串
- 最长子串hdu1503
- HDU 3068 最长回文(Manacher 算法)
- 【April Fools Day Contest 2016E】【脑洞 define分行用法】Out of Controls 不用条件循环实现最长最短路
- 最长上升子序列 记忆化讲解
- poj 2533(最长上升子序列)(n^2 ) 和 nlogn的算法
- leetcode 3 Longest Substring Without Repeating Characters最长无重复子串
- 51Nod 1055 最长等差数列
- HDU 1025 最长递增子序列
- POJ 3261 可重叠k次最长重复子串
- [LeetCode] Maximum Length of Repeated Subarray 最长的重复子数组
- UVA 103 Stacking Boxes (dp + DAG上的最长路径 + 记忆化搜索)
- 动态规划 —— 最长递增子序列(LIS)
- [poj1088]滑雪(二维最长下降子序列)
- poj 1631 Bridging signals (LIS 最长递增子序列 DP-二分)
- 最长回文:LeetCode:5. Longest Palindromic Substring