CREATE TABLE T_LEVEL
(
F_NAME VARCHAR2(100), --层次名称
LEVEL_BEGIN NUMBER(10), --层次的最低值
LEVEL_END NUMBER(10), --层次的最高值
)CREATE TABLE T_DATA
(
F_YYNUM NUMBER(10),--语音费用
F_DXNUM NUMBER(10),--短信费用
F_YZ NUMBER(10),--月租
F_ZNUM NUMBER(10),--总费用
)不知道这样的统计结果怎么用一个sql写:
语音层次名称 短信层次名称 总金额的sum
(
F_NAME VARCHAR2(100), --层次名称
LEVEL_BEGIN NUMBER(10), --层次的最低值
LEVEL_END NUMBER(10), --层次的最高值
)CREATE TABLE T_DATA
(
F_YYNUM NUMBER(10),--语音费用
F_DXNUM NUMBER(10),--短信费用
F_YZ NUMBER(10),--月租
F_ZNUM NUMBER(10),--总费用
)不知道这样的统计结果怎么用一个sql写:
语音层次名称 短信层次名称 总金额的sum
语音费用和短信费用按照T_LEVEL表中LEVEL_BEGIN和LEVEL_END字段进行层次分类,
如果在T_LEVEL表中没有符合条件的记录就返回other
NVL((SELECT F_NAME FROM T_LEVEL WHERE a.F_YYNUM BETWEEN LEVEL_BEGIN AND LEVEL_END),'other') AS 语音层次名称 ,
NVL((SELECT F_NAME FROM T_LEVEL WHERE a.F_DXNUM BETWEEN LEVEL_BEGIN AND LEVEL_END),'other') AS 短信层次名称 ,
(a.F_YYNUM+a.F_DXNUM) AS 总金额的sum
from
T_DATA a
NVL((SELECT F_NAME FROM T_LEVEL WHERE a.F_YYNUM BETWEEN LEVEL_BEGIN AND LEVEL_END),'other') AS 语音层次名称 ,
NVL((SELECT F_NAME FROM T_LEVEL WHERE a.F_DXNUM BETWEEN LEVEL_BEGIN AND LEVEL_END),'other') AS 短信层次名称 ,
(a.F_YYNUM+a.F_DXNUM+a.F_YZ) AS 总金额的sum
from
T_DATA a