ORACLE 中的数据库查询

斯里吉斯
SELECT 
    BILLS.* 
FROM 
    BATELCO_BILLS_S BILLS 
INNER JOIN 
(
    SELECT 
         BTL_BILL_I_NUMBER, 
         MAX(R_MODIFY_DATE) AS MAXDATETIME 
    FROM 
        BATELCO_BILLS_S  
    GROUP BY 
         BTL_BILL_I_NUMBER
) GROUPEDBILLS
    ON BILLS.BTL_BILL_I_NUMBER = GROUPEDBILLS.BTL_BILL_I_NUMBER AND
       BILLS.R_MODIFY_DATE = GROUPEDBILLS.MAXDATETIME 
WHERE 
    (BILLS.BTL_BILL_I_CPR = :B3 OR BILLS.BTL_BILL_C_CPR = :B3) AND
    (TO_DATE(BTL_BILL_I_DATE) BETWEEN TO_DATE(:B2, 'dd/mm/yyyy') AND
     TO_DATE(:B1, 'dd/mm/yyyy') OR
     TO_DATE(BTL_BILL_C_DATE) BETWEEN TO_DATE(:B2, 'dd/mm/yyyy') AND
     TO_DATE(:B1, 'dd/mm/yyyy'))

请通过避免连接来帮助优化查询,以便需要 GROUP BY。

避免重复 BTL_BILL_I_NUMBER 并获取结果。

蒂姆·比格莱森

您可以使用解析函数重写它,例如ROW_NUMBER

SELECT *
FROM
(
    SELECT *,
        ROW_NUMBER() OVER (PARTITION BY BTL_BILL_I_NUMBER
                           ORDER BY R_MODIFY_DATE DESC) rn
    FROM BATELCO_BILLS_S 
    WHERE 
        (BTL_BILL_I_CPR = :B3 OR BTL_BILL_C_CPR = :B3) AND
        (TO_DATE(BTL_BILL_I_DATE) BETWEEN TO_DATE(:B2, 'dd/mm/yyyy') AND
         TO_DATE(:B1, 'dd/mm/yyyy') OR
         TO_DATE(BTL_BILL_C_DATE) BETWEEN TO_DATE(:B2, 'dd/mm/yyyy') AND
         TO_DATE(:B1, 'dd/mm/yyyy'))
) t
WHERE rn = 1;

我不是 Oracle 语法方面的专家,SELECT *上面调用可能不起作用。如果没有,那么您可以(并且理所当然地)列出您想要实际选择的列。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

oracle数据库中的查询限制

从NodeJS查询Oracle数据库中的大数据集

oracle数据库中如何使用过滤查询

如何验证Oracle数据库中的SQL查询语法?

Oracle数据库中的意外查询结果

获取对 oracle 数据库的查询列表

待解决的Oracle数据库查询

Oracle数据库查询设计

如何从oracle数据库读取数据并将数据帧转换为Python中的查询结果?

Oracle表是否存在查询所有数据库中的查询表?

如何在Oracle数据库搜索查询中搜索驼峰案例数据?

使用直接查询不会在Oracle数据库中显示插入的数据

通过Oracle数据库中的SQL查询访问RDBMS中的注释

Oracle数据库查询问题-插入数据问题

Oracle数据库中的写入次数

在Oracle数据库中编码

内存中的整个Oracle数据库

什么是Oracle数据库中的referenceId

Oracle 数据库中的虚拟列

Oracle数据库中的ConnectionString异常

在oracle数据库中创建序列

如何通过此查询在Oracle数据库中获取价值

使用查询更改 Oracle SQL 中的全局数据库超时持续时间

针对内存数据库中的开源测试Oracle SQL查询

在不使用临时表或Oracle数据库中的WITH子句的情况下重用子查询

CodeIgniter和Oracle数据库-ActiveRecord insert()在查询中添加双引号

无法将示例数据库从“凡人的SQL查询”加载到Oracle的SQL Developer中

连接到R中的Oracle数据库以运行SQL查询

使用oci8数据库驱动程序在Codeigniter中组合oracle sql AND OR查询