数据表如图,
按照范围分为小于45KG,45-100KG 之间 100-300KG之间 300-500KG之间,500-1000KG之间各为一列,怎么划分!用decode,sum,sign......。请高手指点!
解决方案 »
- ORECALE 数据库的to_date函数使用
- 散分,数据挖掘除了常用的select、update、delete之外还有哪些要了解的?
- ORA-12519, TNS:no appropriate service handler found
- 存储过程的问题,在线急救。。。
- oracle菜鸟求翻译!急!!!!!急!!各位大大求告诉!
- 删除用户碰到的问题~
- 高分求救?如何实现LONG数据类型的全文检索
- internal 的默认密码是?
- 命令行实现erwin正向工程
- 江湖救急,oracle text大字段如何右边补齐标签?
- 报ORA-00918:column ambiguously defined错误
- 新手求解一个简单的问题:如何在一个语句块里面调用存储过程?
decode(sign(sal - 3000), -1, decode(sign(sal - 2000), 1, sal)) b, --sal 2000 to 3000
decode(sign(sal - 3000), 1, sal, 0, sal) c --sal >= 3000
from emp;
--相应数据改下就行
/*
sign()函数判断表示结果0、正数还是负数,分别返回0、1、-1 ,例如:
引用
a=10,b=20
则sign(a-b)返回-1
*/
最好把你需要结果的样式贴出来,方便理解
比如:201203月份的!select to_char(count(a)),to_char(count(b)),to_char(count(c)),to_char(count(d)),to_char(count(e)) from (
select decode(sign(TOTAL_GROSS_WEIGHT - 45), -1, TOTAL_GROSS_WEIGHT, 0, TOTAL_GROSS_WEIGHT) a, --sal <=2000
decode(sign(TOTAL_GROSS_WEIGHT - 100), -1, decode(sign(TOTAL_GROSS_WEIGHT - 45), 1, TOTAL_GROSS_WEIGHT)) b, --sal 2000 to 3000
decode(sign(TOTAL_GROSS_WEIGHT - 300), -1, decode(sign(TOTAL_GROSS_WEIGHT - 100), 1, TOTAL_GROSS_WEIGHT)) c,
decode(sign(TOTAL_GROSS_WEIGHT - 500), -1, decode(sign(TOTAL_GROSS_WEIGHT - 300), 1, TOTAL_GROSS_WEIGHT)) d,
decode(sign(TOTAL_GROSS_WEIGHT - 500), 1, TOTAL_GROSS_WEIGHT, 0, TOTAL_GROSS_WEIGHT)e,SHIP_TO,REQUEST_DATE --sal >= 500
from ASN_MST WHERE PK_NO LIKE '%GG0112%' and REQUEST_DATE>'20120301' and REQUEST_DATE<'20120331')这样写能sum出来,但是SHIP_TO,REQUEST_DATE 这两个字段,不知道怎么显示出来!
谢谢yinan9帮助,等一下就结贴了!分给你
MONTH TOTAL_GROSS_WEIGHT
-------------------- ------------------
Jan 45
Jan 100
Jan 300
Jan 500
Jan 35
SQL>
SQL> select month,
2 sum(decode(sign(total_gross_weight - 45), -1, 1, 0)) "-45", -- <45
3 sum(decode(sign(total_gross_weight - 100),
4 0,
5 null,
6 1,
7 null,
8 decode(sign(total_gross_weight - 45), -1, 0, 1))) "-100", -- 45=< total_gross_weight <100
9 sum(decode(sign(total_gross_weight - 300),
10 0,
11 null,
12 1,
13 null,
14 decode(sign(total_gross_weight -100), -1, 0, 1))) "300", -- 100=< total_gross_weight <300
15 sum(decode(sign(total_gross_weight - 500),
16 0,
17 null,
18 1,
19 null,
20 decode(sign(total_gross_weight - 300), -1, 0, 1))) "500", -- 300=< total_gross_weight <500
21 sum(decode(sign(total_gross_weight - 1000),
22 0,
23 null,
24 1,
25 null,
26 decode(sign(total_gross_weight - 500), -1, 0, 1))) "1000" -- 500=< total_gross_weight <1000
27 from ASN_MST
28 group by month;
MONTH -45 -100 300 500 1000
-------------------- ---------- ---------- ---------- ---------- ----------
Jan 1 1 1 1 1
谢谢...结贴!刚学oracle不久,多指教。请问哥们做几年了?