使用场景:统计支出表中某人某年的每个月的支出情况

1.创建表如下(oracle)

--支出表

create table PAY

(

ID NUMBER(11) not null,

PAY_NAME VARCHAR2(100),

AUTHOR VARCHAR2(100),

TYPE_ID NUMBER(11),

PRICE FLOAT, --金额

BRIEF VARCHAR2(1000),

USERID NUMBER(11), --用户ID

TIMES DATE, --时间

PRIMARY KEY(ID)

)

2.插入测试数据

insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)

values (1, '1', '1', 0, 1, '1', 1, to_date('12-10-2012', 'dd-mm-yyyy'));

insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)

values (0, '3', '3', 1, 3, '3', 1, to_date('12-10-2012', 'dd-mm-yyyy'));

insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)

values (2, '2', '2', 1, 2, '2343444', 1, to_date('12-10-2012', 'dd-mm-yyyy'));

insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)

values (6, '6', '1', 0, 4000, '1', 1, to_date('12-08-2012', 'dd-mm-yyyy'));

insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)

values (5, '5', '1', 0, 1, '1', 1, to_date('12-10-2012', 'dd-mm-yyyy'));

insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)

values (4, '4', '1', 0, 100, '1', 1, to_date('12-09-2012', 'dd-mm-yyyy'));

insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)

values (7, '4', '1', 0, 566, '1', 1, to_date('03-03-2012', 'dd-mm-yyyy'));

insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)

values (11, '4', '1', 0, 566, '1', 1, to_date('03-04-2012', 'dd-mm-yyyy'));

insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)

values (10, '4', '1', 0, 566, '1', 1, to_date('03-05-2012', 'dd-mm-yyyy'));

insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)

values (9, '4', '1', 0, 566, '1', 1, to_date('03-06-2012', 'dd-mm-yyyy'));

insert into PAY (ID, PAY_NAME, AUTHOR, TYPE_ID, PRICE, BRIEF, USERID, TIMES)

values (8, '4', '1', 0, 566, '1', 1, to_date('03-07-2012', 'dd-mm-yyyy'));

commit;

3.统计sql(查询userid为1的用户2012年的每个月支出情况)

SELECT SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 1, B.PRICE, 0)) AS A,

SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 2, B.PRICE, 0)) AS B,

SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 3, B.PRICE, 0)) AS C,

SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 4, B.PRICE, 0)) AS D,

SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 5, B.PRICE, 0)) AS E,

SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 6, B.PRICE, 0)) AS F,

SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 7, B.PRICE, 0)) AS G,

SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 8, B.PRICE, 0)) AS H,

SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 9, B.PRICE, 0)) AS I,

SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 10, B.PRICE, 0)) AS J,

SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 11, B.PRICE, 0)) AS K,

SUM(DECODE(EXTRACT(MONTH FROM B.TIMES), 12, B.PRICE, 0)) AS L

FROM PAY B

WHERE USERID = 1

AND EXTRACT(YEAR FROM B.TIMES) = '2012'

4.统计结果如下

A B C D E F G H I J K L

0 0 566 566566 566 566 4000 100 7 0 0

5.另外一种写法:对于时间的操作也可以用下面这个

SELECT SUM(DECODE(TO_CHAR(B.TIMES, 'MM'), '01', B.PRICE, 0)) M1,

SUM(DECODE(TO_CHAR(B.TIMES, 'MM'), '02', B.PRICE, 0)) M2,

SUM(DECODE(TO_CHAR(B.TIMES, 'MM'), '03', B.PRICE, 0)) M3,

SUM(DECODE(TO_CHAR(B.TIMES, 'MM'), '04', B.PRICE, 0)) M4,

SUM(DECODE(TO_CHAR(B.TIMES, 'MM'), '05', B.PRICE, 0)) M5,

SUM(DECODE(TO_CHAR(B.TIMES, 'MM'), '06', B.PRICE, 0)) M6,

SUM(DECODE(TO_CHAR(B.TIMES, 'MM'), '07', B.PRICE, 0)) M7,

SUM(DECODE(TO_CHAR(B.TIMES, 'MM'), '08', B.PRICE, 0)) M8,

SUM(DECODE(TO_CHAR(B.TIMES, 'MM'), '09', B.PRICE, 0)) M9,

SUM(DECODE(TO_CHAR(B.TIMES, 'MM'), '10', B.PRICE, 0)) M10,

SUM(DECODE(TO_CHAR(B.TIMES, 'MM'), '11', B.PRICE, 0)) M11,

SUM(DECODE(TO_CHAR(B.TIMES, 'MM'), '12', B.PRICE, 0)) M12

FROM PAY B

WHERE USERID = 1

AND TO_CHAR(B.TIMES, 'yyyy') = '2012'

oracle 统计一年中每个月数据总和_oracle统计一年中每个月的数据相关推荐

  1. oracle 统计一年中每个月数据总和_Oracle 统计某一年中的1-12个月的数据总和

    实战案例 查询2015年1月到12个月的所有实有人口数量和往年2014年1月到12个月的实有人口数量,没有的月份显示 人口数量为0.类似效果如图 创建表create table PERSONSITUA ...

  2. oracle 统计一年中每个月数据总和_Oracle 统计某一年中的1-12个月的数据总和(非常实用)...

    实战案例 查询2015年1月到12个月的所有实有人口数量和往年2014年1月到12个月的实有人口数量,没有的月份显示 人口数量为0.类似效果如图 创建表 create table PERSONSITU ...

  3. oracle 统计一年中每个月数据总和_oracle 统计每年每月数据

    展开全部 第一步:创建表--支出表 create table PAY ( ID       NUMBER(11) not null, PAY_NAME VARCHAR2(100), AUTHOR    ...

  4. sql语句统计最近七天,30天的数据, 统计当天数据总和,统计当天每小时的数据,今日金额的支出

    sql语句统计最近七天的数据 SELECTdate_format( a.date, '%c.%d' ) times,b.count AS totals FROM( SELECTcurdate( ) A ...

  5. oracle 统计一年中每个月数据总和_excel表格有每月数据 怎样统计全年的-用excel公式怎样计算每年每个月的数据总和?...

    excel表格中如何统计1月到12月的数据 我用的是Excel07版为你的表已经是存在的,并能力有限,所只能给你说下面这一种方法了,用着也单的!下边我做一个示范: 第一步 在Excel表格右侧空白任意 ...

  6. Oracle统计某一年中的1-12个月的数据总和

    查询2015年1月到12个月的所有实有人口数量和往年2014年1月到12个月的实有人口数量,没有的月份显示 人口数量为0.类似效果如图 创建表 ? 1 2 3 4 5 6 create table P ...

  7. Excel怎么统计合并单元格后面数据总和

    今天小编跟大家分享一下Excel怎么统计合并单元格后面数据总和 1.打开Excel文件 2.找到并点击下图选项(Excel工具箱,百度即可了解详细下载安装信息,本文这里就不做详细解说.) 3.点击[统 ...

  8. 如何将mysql导出数据泵_Oracle数据库之ORACLE 数据泵导入导出数据

    本文主要向大家介绍了Oracle数据库之ORACLE 数据泵导入导出数据,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 一.摘要 在平常备库和数据库迁移的时候,当遇到大的数据库 ...

  9. oracle并行parallel update两张表_Oracle与并行性 parallel

    Oracle与并行性 并行化操作能力是巨型数据库(Very Large Database,简称VLDB)最重要的特性之一.带有多个CPU的数据库服务器,也被称作SMP,目前是大多数数据库服务器的标准配 ...

最新文章

  1. SQL SERVER 2008的SQLCMD模式
  2. hls.js播放hls直播源
  3. qhfl-3 Course模块
  4. SAP CRM Opportunity response area
  5. python比较列表所有项是否有相同的部分_检查列表中的所有元素是否相同
  6. 用python做数据分析pdf_利用python进行数据分析pdf
  7. 盘点三个JavaScript案例——实现限时秒杀、定时跳转、改变盒子大小
  8. js进阶 14-8 表单序列化函数serializeArray()和serialize()的区别是什么
  9. 微人事项目实战的数据库脚本_EMP微前端实战之cocos2d线上项目
  10. SQL SERVER 2008 R2最大并发连接数修改为2后,SQL连接无法超过2个。
  11. java mysql nclob_java向oracle数据库Clob读取,写入数据
  12. Linux上SQL Server合并复制
  13. java jtextfield 密码_Java Swing实战(三)文本组件JTextField和密码组件JPasswordField
  14. Spring的事务管理
  15. android Fragment详解三:实现Fragment的界面
  16. python学习笔记 day33 ftp大作业(未完成)
  17. 深入 Java 调试体系: 第 1 部分,JPDA 体系概览
  18. 有关matlab裁剪图片方面
  19. 2022年股权转让中这8个问题,你必须重视起来
  20. 创意电子学小知识:电位器

热门文章

  1. Java主人喂猫吃鱼的实验总结,小猫吃鱼的作文4篇
  2. 我们做什么人才 看李开复北大演讲主题21世纪最需要的7种人才
  3. 数学建模、运筹学之非线性规划
  4. 项目管理,用SAP还是8thManage?
  5. 港联证券|标普500指数年内涨逾9%,美股牛市已至?
  6. BlackBerry 快捷键
  7. h1283 linux内核,H1073C H1073 H1283升级失败恢复方法
  8. win7怎么彻底关闭全/半角转换快捷键? imetool.exe
  9. [MSF]server/capture/http_javascript_keylogger键盘记录
  10. SOLIDWORKS 2023正版软件安装教程