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

解决方案 »

  1.   

    我没有说清楚,补充一下:
    语音费用和短信费用按照T_LEVEL表中LEVEL_BEGIN和LEVEL_END字段进行层次分类,
    如果在T_LEVEL表中没有符合条件的记录就返回other
      

  2.   

    select
        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
      

  3.   

    select
        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