`

报表统计sql语句(decode用法及在sql中巧妙组建map的key)

SQL 
阅读更多
/* Formatted on 2011/04/19 20:40 (Formatter Plus v4.8.6) */
SELECT   bill_type billtype, query_type querytype,
         materiel_type_id materieltypeid, z0000 z0000, z0731 z0731,
         z0733 z0733, z0732 z0732, z0734 z0734, z0737 z0737, z0730 z0730,
         z0736 z0736, z0744 z0744, z0746 z0746, z0745 z0745, z0738 z0738,
         z0739 z0739, z0735 z0735, z0743 z0743
    FROM (SELECT   '0' query_type, v.bill_type, v.materiel_type_id,
                   SUM (DECODE (DECODE (v.area_id, '0000', v.materiel_num),
                                '', 0,
                                v.materiel_num
                               )
                       ) z0000,
                   SUM (DECODE (DECODE (v.area_id, '0731', v.materiel_num),
                                '', 0,
                                v.materiel_num
                               )
                       ) z0731,
                   SUM (DECODE (DECODE (v.area_id, '0733', v.materiel_num),
                                '', 0,
                                v.materiel_num
                               )
                       ) z0733,
                   SUM (DECODE (DECODE (v.area_id, '0732', v.materiel_num),
                                '', 0,
                                v.materiel_num
                               )
                       ) z0732,
                   SUM (DECODE (DECODE (v.area_id, '0734', v.materiel_num),
                                '', 0,
                                v.materiel_num
                               )
                       ) z0734,
                   SUM (DECODE (DECODE (v.area_id, '0737', v.materiel_num),
                                '', 0,
                                v.materiel_num
                               )
                       ) z0737,
                   SUM (DECODE (DECODE (v.area_id, '0730', v.materiel_num),
                                '', 0,
                                v.materiel_num
                               )
                       ) z0730,
                   SUM (DECODE (DECODE (v.area_id, '0736', v.materiel_num),
                                '', 0,
                                v.materiel_num
                               )
                       ) z0736,
                   SUM (DECODE (DECODE (v.area_id, '0744', v.materiel_num),
                                '', 0,
                                v.materiel_num
                               )
                       ) z0744,
                   SUM (DECODE (DECODE (v.area_id, '0746', v.materiel_num),
                                '', 0,
                                v.materiel_num
                               )
                       ) z0746,
                   SUM (DECODE (DECODE (v.area_id, '0745', v.materiel_num),
                                '', 0,
                                v.materiel_num
                               )
                       ) z0745,
                   SUM (DECODE (DECODE (v.area_id, '0738', v.materiel_num),
                                '', 0,
                                v.materiel_num
                               )
                       ) z0738,
                   SUM (DECODE (DECODE (v.area_id, '0739', v.materiel_num),
                                '', 0,
                                v.materiel_num
                               )
                       ) z0739,
                   SUM (DECODE (DECODE (v.area_id, '0735', v.materiel_num),
                                '', 0,
                                v.materiel_num
                               )
                       ) z0735,
                   SUM (DECODE (DECODE (v.area_id, '0743', v.materiel_num),
                                '', 0,
                                v.materiel_num
                               )
                       ) z0743
              FROM v_inout_month_report v
             WHERE 1 = 1
               AND (   v.districtid IN (
                              SELECT man_obj_id
                                FROM td_sge_keeping_ref
                               WHERE keeping_id = 'csck1'
                                     AND manager_level = 1)
                    OR v.storehouse_id IN (
                              SELECT man_obj_id
                                FROM td_sge_keeping_ref
                               WHERE keeping_id = 'csck1'
                                     AND manager_level = 0)
                   )
          GROUP BY v.materiel_type_id, v.bill_type
          UNION
          SELECT   '1' query_type, bill_type, materiel_type_id,
                   SUM (DECODE (a.area_id, '0000', 1, 0)) z0000,
                   SUM (DECODE (a.area_id, '0731', 1, 0)) z0731,
                   SUM (DECODE (a.area_id, '0733', 1, 0)) z0733,
                   SUM (DECODE (a.area_id, '0732', 1, 0)) z0732,
                   SUM (DECODE (a.area_id, '0734', 1, 0)) z0734,
                   SUM (DECODE (a.area_id, '0737', 1, 0)) z0737,
                   SUM (DECODE (a.area_id, '0730', 1, 0)) z0730,
                   SUM (DECODE (a.area_id, '0736', 1, 0)) z0736,
                   SUM (DECODE (a.area_id, '0744', 1, 0)) z0744,
                   SUM (DECODE (a.area_id, '0746', 1, 0)) z0746,
                   SUM (DECODE (a.area_id, '0745', 1, 0)) z0745,
                   SUM (DECODE (a.area_id, '0738', 1, 0)) z0738,
                   SUM (DECODE (a.area_id, '0739', 1, 0)) z0739,
                   SUM (DECODE (a.area_id, '0735', 1, 0)) z0735,
                   SUM (DECODE (a.area_id, '0743', 1, 0)) z0743
              FROM (SELECT DISTINCT v.area_id, v.bill_type, v.bill_id,
                                    v.materiel_type_id
                               FROM v_inout_month_report v
                              WHERE 1 = 1
                                AND (   v.districtid IN (
                                           SELECT man_obj_id
                                             FROM td_sge_keeping_ref
                                            WHERE keeping_id = 'csck1'
                                              AND manager_level = 1)
                                     OR v.storehouse_id IN (
                                           SELECT man_obj_id
                                             FROM td_sge_keeping_ref
                                            WHERE keeping_id = 'csck1'
                                              AND manager_level = 0)
                                    )) a
          GROUP BY a.bill_type, materiel_type_id
          UNION
          SELECT   '2' query_type, bill_type, materiel_type_id,
                   SUM (DECODE (a.area_id, '0000', 1, 0)) z0000,
                   SUM (DECODE (a.area_id, '0731', 1, 0)) z0731,
                   SUM (DECODE (a.area_id, '0733', 1, 0)) z0733,
                   SUM (DECODE (a.area_id, '0732', 1, 0)) z0732,
                   SUM (DECODE (a.area_id, '0734', 1, 0)) z0734,
                   SUM (DECODE (a.area_id, '0737', 1, 0)) z0737,
                   SUM (DECODE (a.area_id, '0730', 1, 0)) z0730,
                   SUM (DECODE (a.area_id, '0736', 1, 0)) z0736,
                   SUM (DECODE (a.area_id, '0744', 1, 0)) z0744,
                   SUM (DECODE (a.area_id, '0746', 1, 0)) z0746,
                   SUM (DECODE (a.area_id, '0745', 1, 0)) z0745,
                   SUM (DECODE (a.area_id, '0738', 1, 0)) z0738,
                   SUM (DECODE (a.area_id, '0739', 1, 0)) z0739,
                   SUM (DECODE (a.area_id, '0735', 1, 0)) z0735,
                   SUM (DECODE (a.area_id, '0743', 1, 0)) z0743
              FROM (SELECT DISTINCT v.materiel_id, v.materiel_type_id,
                                    v.area_id, v.bill_type
                               FROM v_inout_month_report v
                              WHERE 1 = 1
                                AND (   v.districtid IN (
                                           SELECT man_obj_id
                                             FROM td_sge_keeping_ref
                                            WHERE keeping_id = 'csck1'
                                              AND manager_level = 1)
                                     OR v.storehouse_id IN (
                                           SELECT man_obj_id
                                             FROM td_sge_keeping_ref
                                            WHERE keeping_id = 'csck1'
                                              AND manager_level = 0)
                                    )) a
          GROUP BY materiel_type_id, bill_type)
ORDER BY bill_type, query_type, materiel_type_id
分享到:
评论

相关推荐

    java经典面试题

    - **应用场景**:在Java应用中,使用持久层框架可以简化数据库操作,实现数据访问层的代码。 #### Java代码片段编写 - **核心知识点**:包括控制流程、文件操作和网络请求等。例如,判断用户是否登录、获取URL参数...

    python cookbook 英文版

    - 在处理非英文字符时,正确使用`str.encode()`和`bytes.decode()`方法可以确保字符串的正确编码和解码。 - **将Unicode字符打印到标准输出** - 需要确保Python解释器和终端都支持Unicode输出,通常使用`print()`...

    Python Cookbook

    可以使用`encode()`和`decode()`方法在Unicode和普通字符串之间转换。例如:`unicode_string.encode('utf-8')`。 **3.18 将Unicode字符打印到标准输出** 在Python 3中,默认情况下打印Unicode字符是安全的。但在...

    java单词表

    9. Key [ki:]:关键,指的是 Map 中的键。 10. Value [ˈvælju:]:价值,指的是 Map 中的值。 第十章 1. JDBC [ˈdʒeɪdiːsiː]:Java 数据库连接,指的是 Java 语言中用于连接数据库的 API。 2. Driver ...

    Python cookbook.pdf

    为了避免这种情况,可以使用`dict.get()`方法,该方法在键不存在时返回默认值。 ```python value = my_dict.get('key', default_value) ``` **1.4 Adding an Entry to a Dictionary(向字典添加条目)** 向字典...

    oracle学习笔记

    根据提供的文件信息,我们可以整理出一系列关于Oracle数据库的重要知识点,主要涵盖了Oracle的常用命令、查询语句、表空间管理以及备份与恢复等几个方面。下面将详细解释这些知识点。 ### Oracle学习笔记 #### 一...

    Task__

    - 方法:类中的函数,如`public function sayHello() {...}` - 构造函数:`__construct()`,对象创建时自动执行。 - 继承:`class ChildClass extends ParentClass { ... }` - 封装和访问修饰符:`public`,`...

Global site tag (gtag.js) - Google Analytics