一个关于Oracle统计的问题,还望高手给出解决方案,谢谢:
原始数据以及表结构:用户手机号 积分值 积分类型 积分日期
1234567890 1 1 2010-12-27
1234567890 2 2 2010-12-27
1234567890 1 3 2010-12-27
1234567890 3 4 2010-12-27
1234567890 5 5 2010-12-27
1234567890 1 3 2010-12-23
1234567890 3 4 2010-12-23
1234567890 5 5 2010-12-23需求: 提取当天不同类型积分的总值,
格式如下: 用户手机号码 1积分值 2积分值 3积分值 4积分值 5积分值 当天总积分值 提取当月的不同类型的积分值
格式如下: 用户手机号码 1积分值 2积分值 3积分值 4积分值 5积分值 当月总积分值
提取当月的不同类型的积分值
格式如下: 用户手机号码 1积分值 2积分值 3积分值 4积分值 5积分值 总积分值
最希望个格式如下:
用户手机号码 1积分值 2积分值 3积分值 4积分值 5积分值 当天累计积分值 当月总积分值 总积分值
以上Sql脚本最好可以一条脚本搞定,谢谢
原始数据以及表结构:用户手机号 积分值 积分类型 积分日期
1234567890 1 1 2010-12-27
1234567890 2 2 2010-12-27
1234567890 1 3 2010-12-27
1234567890 3 4 2010-12-27
1234567890 5 5 2010-12-27
1234567890 1 3 2010-12-23
1234567890 3 4 2010-12-23
1234567890 5 5 2010-12-23需求: 提取当天不同类型积分的总值,
格式如下: 用户手机号码 1积分值 2积分值 3积分值 4积分值 5积分值 当天总积分值 提取当月的不同类型的积分值
格式如下: 用户手机号码 1积分值 2积分值 3积分值 4积分值 5积分值 当月总积分值
提取当月的不同类型的积分值
格式如下: 用户手机号码 1积分值 2积分值 3积分值 4积分值 5积分值 总积分值
最希望个格式如下:
用户手机号码 1积分值 2积分值 3积分值 4积分值 5积分值 当天累计积分值 当月总积分值 总积分值
以上Sql脚本最好可以一条脚本搞定,谢谢
解决方案 »
- 一个有点复制的SQL语句
- 请教一个联合查询的问题
- 查询结果排序问题
- 导出数据出现的错误~~~
- oracle 10g 创建trigger出错:索引中丢失 IN 或 OUT 参数 ::1
- oracle为什么不能实现如下语句:delete from 表A,表B where 表A.empid=表B.empid(我是本人初学,在线等)
- 新手请教一个关于存储过程的问题,急,在线等待!!!!
- 高手吖!能在Oracle 中用 "Or" 来查询吗?生成的SQL语句什么样子吖?
- 程序中一次要对多个库表里面的数据进行删除或修改,怎么做最安全,最理想的方法?
- 跪求大神 解答 再写不出来就要被开除了
- oracle体系结构 求建议
- 讲数据结构相同的表追加到另外一表下
------莫非lz抖了3下,菜鸟来接分哈呵呵
SQL>
SQL> with tablea as
2 (
3 select '1234567890' msn,1 j_value, 1 j_type, date '2010-12-27' j_date from dual union all
4 select '1234567890' msn,2 j_value, 2 j_type, date '2010-12-27' j_date from dual union all
5 select '1234567890' msn,1 j_value, 3 j_type, date '2010-12-27' j_date from dual union all
6 select '1234567890' msn,3 j_value, 4 j_type, date '2010-12-27' j_date from dual union all
7 select '1234567890' msn,5 j_value, 5 j_type, date '2010-12-27' j_date from dual union all
8 select '1234567890' msn,1 j_value, 3 j_type, date '2010-12-23' j_date from dual union all
9 select '1234567890' msn,3 j_value, 4 j_type, date '2010-12-23' j_date from dual union all
10 select '1234567890' msn,5 j_value, 5 j_type, date '2010-12-23' j_date from dual
11 )
12 select msn 用户手机号码,
13 max(decode(j_type, 1, j_value)) 积分值一,
14 max(decode(j_type, 2, j_value)) 积分值二,
15 max(decode(j_type, 3, j_value)) 积分值三,
16 max(decode(j_type, 4, j_value)) 积分值四,
17 max(decode(j_type, 5, j_value)) 积分值五,
18 dvalue 当天累计积分值,
19 mvalue 当月总积分值,
20 tvalue 总积分值
21 from (select msn,
22 j_value,
23 j_type,
24 j_date,
25 sum(j_value) over(partition by trunc(j_date) order by 1) dvalue,
26 sum(j_value) over(partition by trunc(j_date, 'mm') order by 1) mvalue,
27 sum(j_value) over(order by 1) tvalue
28 from tablea)
29 group by msn, dvalue, mvalue, tvalue
30 ;用户手机号码 积分值一 积分值二 积分值三 积分值四 积分值五 当天累计积分值 当月总积分值 总积分值
------------ ---------- ---------- ---------- ---------- ---------- -------------- ------------ ----------
1234567890 1 3 5 9 21 21
1234567890 1 2 1 3 5 12 21 21SQL>
COUNT(DECODE(TRUNC(T.SCORE_TYPE), '1', T.MOBILE_NO)) NUMBER_FOR_1,
COUNT(DECODE(TRUNC(T.SCORE_TYPE), '2', T.MOBILE_NO)) NUMBER_FOR_2,
COUNT(DECODE(TRUNC(T.SCORE_TYPE), '3', T.MOBILE_NO)) NUMBER_FOR_3,
COUNT(DECODE(TRUNC(T.SCORE_TYPE), '4', T.MOBILE_NO)) NUMBER_FOR_4,
COUNT(DECODE(TRUNC(T.SCORE_TYPE), '5', T.MOBILE_NO)) NUMBER_FOR_5,
COUNT(DECODE(TRUNC(T.SCORE_TYPE), '1', T.MOBILE_NO)) +
COUNT(DECODE(TRUNC(T.SCORE_TYPE), '2', T.MOBILE_NO)) +
COUNT(DECODE(TRUNC(T.SCORE_TYPE), '3', T.MOBILE_NO)) +
COUNT(DECODE(TRUNC(T.SCORE_TYPE), '4', T.MOBILE_NO)) +
COUNT(DECODE(TRUNC(T.SCORE_TYPE), '5', T.MOBILE_NO)) NUMBER_FOR_sum
FROM CMREAD_USER_SCORE_DETAIL T
WHERE T.UPADTE_DATE = TO_DATE('2010-12-27', 'YYYY-MM-DD')
GROUP BY T.MOBILE_NO123456789 1 1 1 1 1 5