日期:2014-05-17  浏览次数:21000 次

oracle如何按照范围分列!求高手帮忙...

数据表如图,
按照范围分为小于45KG,45-100KG 之间 100-300KG之间 300-500KG之间,500-1000KG之间各为一列,怎么划分!用decode,sum,sign......。请高手指点!
------最佳解决方案--------------------
加上实习快三年了,互相学习

------其他解决方案--------------------
select decode(sign(sal - 2000), -1, sal, 0, sal) a, --sal <=2000
       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
*/

------其他解决方案--------------------
要想什么样的显示结果,说详细点行不
------其他解决方案--------------------
如果需要做sum,你这里还少了一列
------其他解决方案--------------------
引用:
如果需要做sum,你这里还少了一列

如果需要sum显示列的总数,怎么sum一下呢?谢谢...
------其他解决方案--------------------
引用:
引用:如果需要做sum,你这里还少了一列
如果需要sum显示列的总数,怎么sum一下呢?谢谢...

sum函数求和,你说的列的总数是什么意思。
最好把你需要结果的样式贴出来,方便理解
------其他解决方案--------------------
引用:
引用:
引用:如果需要做sum,你这里还少了一列
如果需要sum显示列的总数,怎么sum一下呢?谢谢...
sum函数求和,你说的列的总数是什么意思。
最好把你需要结果的样式贴出来,方便理解



就是这样的!按月求总和
------其他解决方案--------------------
引用:
引用:引用:
引用:如果需要做sum,你这里还少了一列
如果需要sum显示列的总数,怎么sum一下呢?谢谢...
sum函数求和,你说的列的总数是什么意思。
最好把你需要结果的样式贴出来,方便理解


就是这样的!按月求总和
这样好办了,把你表的相关字段给我
------其他解决方案--------------------
引用:
引用:
引用:引用:
引用:如果需要做sum,你这里还少了一列
如果需要sum显示列的总数,怎么sum一下呢?谢谢...
sum函数求和,你说的列的总数是什么意思。
最好把你需要结果的样式贴出来,方便理解


就是这样的!按月求……


比如: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')