公司做了一个电子卡系统,需要出一张电子卡销售情况的报表,研究了半天终于出来了,sql如下:

SELECT nvl((SELECT TRIM(city_name)
FROM sys_city_info
WHERE to_char(area_code) = area),
area) 地市,
nvl((SELECT TRIM(param_remark)
FROM sys_param
WHERE param_type = 'card_type'
AND param_code = card),
card) 卡类型,
nvl((SELECT TRIM(product_name)
FROM bf_product
WHERE product_id = product
AND prov_code = '034'),
product) 卡产品名称,
quantity 销售数量,
org_amount 销售面值,
amount 实收金额
FROM (SELECT decode(row_number() over(PARTITION BY area ORDER BY area, card, product), 1, area, '') area,
decode(row_number() over(PARTITION BY area, card ORDER BY area, card, product),
1,
card,
'') card,
product,
quantity,
org_amount,
amount
FROM (SELECT decode(area_code_group, 1, '合计', area_code) area,
decode(area_code_group, 0, decode(card_type_group, 1, '大计', card_type), '') card,
decode(card_type_group, 0, decode(product_id_group, 1, '小计', product_id), '') product,
quantity,
org_amount,
amount
FROM (SELECT area_code,
GROUPING(area_code) area_code_group,
card_type,
GROUPING(card_type) card_type_group,
product_id,
GROUPING(product_id) product_id_group,
SUM(total_quantity) quantity,
SUM(total_org_amount) / 100 org_amount,
SUM(total_amount) / 100 amount
FROM st_trans_info
WHERE prov_code = '034'
AND substrb(stat_date, 1, 6) <= '200605' --可以指定任何形式的日期,如某一日(月)或多日(月)
AND busi_id IN (2,20) --2购卡 20批量购卡 1查询 3退卡 -1购卡冲正 10卡号查询
AND card_status = 0 --0有效 -1已退卡 -2已冲正
GROUP BY ROLLUP(area_code, card_type, product_id))))

出来的报表如下:

地市 卡类型 卡产品名称 销售数量 销售面值 实收金额
1 0 193长途卡 50元特惠长话卡 40 2000 800
2 100元特惠长话卡 2 200 80
3 小计 42 2200 880
4 本地全能通卡 9元澳洲畅游卡 26 234 234
5 50元特惠长话卡 323 16150 6460
6 100元特惠长话卡 45 4500 1800
7 小计 394 20884 8494
8 大计 436 23084 9374
9 南京 本地全能通卡 50元特惠长话卡 26 1300 520
10 100元特惠长话卡 3 300 120
11 小计 29 1600 640
12 大计 29 1600 640
13 无锡 193长途卡 50元特惠长话卡 2 100 40
14 小计 2 100 40
15 游戏点卡 100元特惠长话卡 1 100 40
16 小计 1 100 40
17 本地全能通卡 50元特惠长话卡 9 450 180
18 100元特惠长话卡 1 100 40
19 小计 10 550 220
20 大计 13 750 300
21 镇江 本地全能通卡 50元特惠长话卡 2 100 40
22 小计 2 100 40
23 大计 2 100 40
24 常熟 本地全能通卡 50元特惠长话卡 17 850 340
25 100元特惠长话卡 1 100 40
26 小计 18 950 380
27 大计 18 950 380
28 南通 本地全能通卡 50元特惠长话卡 10 500 200
29 100元特惠长话卡 1 100 40
30 小计 11 600 240
31 大计 11 600 240
32 杨州 193长途卡 50元特惠长话卡 4 200 80
33 小计 4 200 80
34 本地全能通卡 50元特惠长话卡 6 300 120
35 小计 6 300 120
36 大计 10 500 200
37 盐城 游戏点卡 50元特惠长话卡 1 50 20
38 小计 1 50 20
39 本地全能通卡 50元特惠长话卡 6 300 120
40 100元特惠长话卡 2 200 80
41 小计 8 500 200
42 大计 9 550 220
43 徐州 193长途卡 100元特惠长话卡 1 100 40
44 小计 1 100 40
45 本地全能通卡 50元特惠长话卡 4 200 80
46 100元特惠长话卡 1 100 40
47 小计 5 300 120
48 大计 6 400 160
49 淮阴 本地全能通卡 50元特惠长话卡 4 200 80
50 100元特惠长话卡 1 100 40
51 小计 5 300 120
52 大计 5 300 120
53 连云港 本地全能通卡 50元特惠长话卡 3 150 60
54 小计 3 150 60
55 大计 3 150 60
56 常州 游戏点卡 50元特惠长话卡 5 250 100
57 小计 5 250 100
58 本地全能通卡 50元特惠长话卡 7 350 140
59 100元特惠长话卡 3 300 120
60 小计 10 650 260
61 大计 15 900 360
62 泰州 游戏点卡 50元特惠长话卡 1 50 20
63 小计 1 50 20
64 本地全能通卡 50元特惠长话卡 3 150 60
65 100元特惠长话卡 2 200 80
66 小计 5 350 140
67 大计 6 400 160
68 宿迁 本地全能通卡 50元特惠长话卡 5 250 100
69 小计 5 250 100
70 大计 5 250 100
71 合计 568 30534 12354

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10881/viewspace-178022/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10881/viewspace-178022/

自己感觉写的一个比较经典的报表sql相关推荐

  1. 自己写的一个执行带参数的sql,PreparedStatement

    之前是做.net的.转到java以后,发现很多问题,还有一些不便之处.但是我们可以自己动手. public int exesql(String sql,Object[] param) throws S ...

  2. 随着上网次数越来越多,IE地址栏中留下大量的历史网址,感觉很不爽,于是决心写一个清除IE地址栏的应用程序,随说有“上网助手”,但它要在能上网时才起作用,我想在不能上网时来对系统进行清理,于是写了一个叫

    随着上网次数越来越多,IE地址栏中留下大量的历史网址,感觉很不爽,于是决心写一个清除IE地址栏的应用程序,随说有"上网助手",但它要在能上网时才起作用,我想在不能上网时来对系统进行 ...

  3. 古堡算式_经典的全排列问题(福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!” 华生:“我猜也)

    题目描述 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:"ABCDE应该代表不同的数字,问号也代表某个数字!" 华生:&quo ...

  4. 软件测试个人求职简历该怎么写?一个优质软件测试工程师简历

    目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...

  5. python斗地主游戏源码_我用tkinter写的一个斗地主练习复盘python程序

    python写的斗地主模拟器使用说明,以及python的标准控件库tkinter的使用示例. http://vdisk.weibo.com/s/C5R1f8s9EVq2y 我用python写的一个斗地 ...

  6. C语言时间管理小程序,写了一个时间管理的微信小程序

    原标题:写了一个时间管理的微信小程序 前言 以前看过<把时间当作朋友>这本书,里面有个管理时间的观点个人觉得很有用,就是养成记录自己每天的时间消耗的一个习惯,这样有助于更有效地管理自己的时 ...

  7. 手写Spring-ioc 注入 jdk反射实现 绝对满足你的好奇心哦 解决怎么我写了一个注解就可以直接注入了?

    Spring-Ioc原理 解析 我们学完Spring后,大都就直接接着学习之后的内容啦,但是我想偶尔回过头来看一看,才能走的更远啊. 温故而知新. 关于Spring是怎么实现的?怎么我写了一个注解就可 ...

  8. python写机器人程序_用Python写的一个多线程机器人聊天程序

    本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...

  9. PIL+pyqt 写了一个图片批量无损压缩工具python

    前言 学习了一段时间python了-但是一直没有好的系统性的练手项目- 刚好最近想整理电脑里老旧的照片, 图片太多 大概130G 文件- 本人也是比较怀旧的人.图片不想丢弃-磁盘用了有10年了,以防意 ...

最新文章

  1. Swift类与OC类方法相互调用的
  2. php 鸟哥写过的c扩展,Yaconf —— 高性能的 PHP 配置管理扩展,鸟哥出品哦~
  3. ODBC、OLEDB、ADO的区别和联系
  4. 狂砸250多亿!亚马逊花了7年时间,造了一个让你自愿加班到死的办公室!
  5. Python下opencv(图像的阈值处理)
  6. Bootstrap横屏后竖屏
  7. Java推箱子游戏,文档+源码
  8. 电子科大杨宁TCPIP协议原理(总结)
  9. 腹肌锻炼视频(02):八种基本动作
  10. 计算机上的no是代表什么意思啊,电脑出现nosignal是什么意思
  11. MarkDown 的常用高阶教程
  12. php 配置 error_reporting,关于php中的错误配置display_errors与error_reporting说明
  13. zcmu --1919(多重背包)
  14. 拆30多元买的筋膜枪
  15. js兼容安卓和IOS的复制文本到剪切板,已做浏览器兼容处理,勿需插件
  16. vero visi 2021中文版
  17. 巨星陨落!哈尔滨工业大学讣告
  18. 华为轮值董事长郭平:华为重申不造车
  19. linux shell alias,Linux shell脚本中使用alias定义的别名
  20. Android轮播图原理思路分析+实现方案

热门文章

  1. FPGA蜂鸣器实现歌曲《两只老虎》
  2. 深渊:伊甸的幽灵 for mac(冒险解谜游戏)
  3. SAP BASIS ADM100 中文版 Unit 6(1)
  4. React-Router V6 传参,类式组件用ref搭个桥接收。
  5. 【X11vnc】Ubuntu18.04 x11vnc启动失败,报错error opening logfile: /var/log/x11vnc.log
  6. 计算机毕业设计Javavue学习视频课程网站(源码+系统+mysql数据库+lw文档)
  7. 018 VGA、DVI、HDMI
  8. C++多线程,多线程通信,队列
  9. 假如让我回到高考结束的那个暑假,我会这么做...
  10. matlab广域保护分区算法,基于行波信息的广域后备保护关联域识别方法与流程