数据库一张表如下:
create table REQUIREMENT_20100522
(
  CDR_DATE  VARCHAR2(8),
  AREA_ID   VARCHAR2(2),
  CDR_COUNT NUMBER(10),
  AREA      VARCHAR2(2)
)
数据如下:
CDR_DATE AREA_ID   CDR_COUNT AREA
-------- ------- ----------- ----
20100204 DG         10366786 30
20100205 GZ         21540308 10
20100205 SW          1399602 11
20100205 YJ          1601580 12
20100205 JY          2627888 13
20100205 MM          2843887 14
20100205 JM          3591619 15
20100205 SG          1531448 16
20100205 HZ          4215244 17
20100205 MZ          1357926 18
20100205 ST          4068947 19
20100205 SZ         17875757 20
20100205 ZH          2435628 21
20100205 FS          7709217 22
20100205 ZQ          2041651 23
20100205 ZJ          3052660 24其中地市有21个地市,日期无限制
要求查询结果如下:
           10  11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
20100201  统计结果 统计结果 统计结果 统计结果 统计结果 统计结果 统计结果 
20100202
20100203
........其中统计结果为cdr_count
一个地市编码+一个日期可以唯一确定一个统计记录看有可能一个sql能查出来?

解决方案 »

  1.   

    -- 统计结果--- 统计哪字字段的结果嘛?CDR_COUNT ? AREA ?
    -- 怕多解释一句话嘛?哼......
      

  2.   

    汗,统计结果其实就是cdr_count那个字段那.
    我所说的 这个 统计结果 在这次查询中 是不要 计算的。
    没说太明白,谢谢2楼及时提醒.
      

  3.   

    可以试试over (partion by ) 或者decode
    网上有很多类似帖子
      

  4.   

    是个行专列问题。 问一下,AREA_ID和AREA是唯一的对应关系吗?
      

  5.   

    这个是否满足?SELECT T1.CDR_DATE,
           (SELECT SUM(cdr_count)
              FROM requirement_20100522
             WHERE area_id = 'GZ'
               AND cdr_date = T1.CDR_DATE) "10",
           (SELECT SUM(cdr_count)
              FROM requirement_20100522
             WHERE area_id = 'SW'
               AND cdr_date = T1.CDR_DATE) "20",
           (SELECT SUM(cdr_count)
              FROM requirement_20100522
             WHERE area_id = 'YJ'
               AND cdr_date = T1.CDR_DATE) "30"
               
               --.....
      FROM (select t.cdr_date from requirement_20100522 t group by t.cdr_date) T1