`
远去的渡口
  • 浏览: 472982 次
  • 性别: Icon_minigender_2
  • 来自: 上海转北京
社区版块
存档分类
最新评论

Ibatis中求上个月最后一天的实例sql语句

阅读更多

       在做会员管理模块的时候,有这样一个需求,预存分为许多期,列表展示时需要查询出上期余额,本期余额,日报表倒是很好办,因为数据库中已经存了上期余额,关键是按月查询时,上期余额是上个月的最后一天的上期余额。

后来看了Oracle数据库中的函数,写出以下语句就搞定:

<select id="queryMerchantPrepayByMonth" parameterClass="java.util.HashMap" resultMap="merchantPrepayMap">
 select to_char(to_date(day,'yyyy-mm-dd'),'yyyy-mm')  as  transTime,
(
      select PREVIOUS_BALANCE_AMOUNT/100  as PREVIOUS_BALANCE_AMOUNT
      from report_account_prepay_statis 
      where day = 
      to_char(
      last_day( add_months(to_date(raps.month,'yyyy-mm'),-1) )
      ,'yyyy-mm-dd')
      and store_id = 'merchant'
      and merchant_id =#merchantId#
     ) 
     as PREVIOUS_BALANCE_AMOUNT , 
     
     (
      select BALANCE_AMOUNT/100 as BALANCE_AMOUNT
      from report_account_prepay_statis 
      where day = 
                (
                    case 
                    when raps.month &lt; substr(#endDate#,1,7)
                         then 
                         to_char(
                           last_day(
                            to_date(raps.month,'yyyy-mm')
                            )
                            ,'yyyy-mm-dd'
                          )
                    else #endDate#
                    end
                )
      and store_id = 'merchant'
      and merchant_id = #merchantId#
     )
     as  BALANCE_AMOUNT,


sum(PREPAY_AMOUNT/100) as PREPAY_AMOUNT ,
sum(CONSUME_AMOUNT/100) as CONSUME_AMOUNT ,
sum(OVERDUE_AMOUNT/100) as OVERDUE_AMOUNT,
sum(DELAY_AMOUNT/100) as DELAY_AMOUNT
from report_account_prepay_statis raps
where merchant_id=#merchantId#  and store_id='merchant'
and to_char(to_date(day,'yyyy-mm-dd'),'yyyy-mm-dd')  
between #startDate# and #endDate#
group by to_char(to_date(day,'yyyy-mm-dd'),'yyyy-mm'),month
order by month

</select>

 

 

也就是day =
      to_char(
      last_day( add_months(to_date(raps.month,'yyyy-mm'),-1) )
      ,'yyyy-mm-dd')
最关键了。

这里的raps.month是一个VARCHAR2类型的数值。举例说明,假如这个值是2011-01,那么它的结果是2010-12-31号,

select 
      to_char(
      last_day( add_months(to_date('2011-01','yyyy-mm'),-1) )
      ,'yyyy-mm-dd') from dual

 

分享到:
评论

相关推荐

    Ibatis常用sql语句

    根据给定的文件信息,以下是对“Ibatis常用SQL语句”的详细解析,涵盖了一系列Ibatis在数据操作中的应用实例。 ### Ibatis简介 Ibatis是一个支持普通SQL查询、存储过程以及高级映射的优秀持久层框架。Ibatis可以让...

    iBatis开发指南和一个iBatis实例

    iBatis是一个轻量级的Java持久层框架,它提供了SQL映射框架,将SQL语句与Java代码分离,使得数据库访问更为灵活和可控。在本压缩包中,你将找到一系列关于iBatis的学习资源,包括PDF文档、实例代码等,这些都是深入...

    Ibatis 入门经典 实例

    Ibatis 是一款著名的轻量级 Java 持久层框架,它提供了一种映射 SQL 和 Java 对象的简单方式,从而减轻了开发人员在数据库操作中的工作负担。这篇实例教程将带你深入理解 Ibatis 的核心概念和常用功能,帮助你快速...

    ibatis学习完整实例,例子

    最后,Ibatis的事务管理也是一个重要的部分。通过Ibatis的TransactionManager,我们可以控制事务的开启、提交、回滚等行为,确保数据的一致性。在"ibatistest2"项目中,我们可以看到如何结合Spring框架进行事务管理...

    ibatis 实例

    在本实例中,我们可能看到一个具体的 DAO 类,它是如何通过 iBATIS API 来执行 SQL 查询的。 描述中提到的博客链接可能提供了详细的步骤和代码示例,但这里我们可以先概括一下 iBATIS 的关键特性: 1. **SQL 映射...

    Ibatis应用实例.docx

    每个需要进行O/R Mapping的Java类都会有一个对应的XML配置,用于定义SQL语句和结果集映射。 在Java对象方面,我们有`example.Account`类,包含username和password两个属性,以及对应的getter和setter方法。这个类将...

    ibatis +mysql 实例

    Ibatis是一个轻量级的Java持久层框架,它允许开发者将SQL语句直接写在配置文件中,与传统的JDBC相比,提供了更加灵活和易于维护的解决方案。 Ibatis的主要优点包括: 1. **简化JDBC代码**:Ibatis通过XML或注解...

    Ibatis.net学习和实例~

    Ibatis.net是一个轻量级的持久层框架,它在.NET环境中提供了灵活的数据访问接口,能够有效地将业务逻辑和数据访问层解耦。本教程将深入探讨Ibatis.net的学习与实践,帮助开发者更好地理解和掌握这个强大的工具。 ...

    IBatis .NET框架实例

    IBatis(现在称为MyBatis)是一个轻量级的持久层框架,它允许开发者将SQL语句直接嵌入到应用程序代码中,从而避免了传统的ADO.NET模式带来的复杂性。通过使用XML或注解来配置和映射SQL,IBatis使得数据访问更加灵活...

    sqlserver Ibatis XML自动生成工具

    Ibatis是一个优秀的Java持久层框架,它简化了数据库操作,允许开发者直接编写SQL语句,避免了ORM(对象关系映射)框架的一些复杂性。然而,尽管Ibatis提供了灵活性,但为每个表创建对应的XML映射文件仍然是一个耗时...

    <<ibatis框架源代码剖析>> 一个CRUD操作的ibatis项目实例

    在iBatis中,可以定义一个`&lt;insert&gt;`标签,其中包含SQL语句,然后在Java代码中调用SqlSession的`insert()`方法,传入映射ID和参数对象。 2. 读取(Retrieve):读取数据通常使用SELECT语句。`&lt;select&gt;`标签定义了...

    IBatis开发实例

    在IT行业中,数据库访问是应用程序的核心部分,而IBatis作为一个优秀的持久层框架,极大地简化了这一过程。本教程将深入探讨IBatis的开发实例,帮助开发者更好地理解和运用这个强大的工具。 **IBatis简介** IBatis...

    iBATIS-SqlMaps-中文教程

    iBATIS是一个持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,实现了SQL与Java代码的分离,简化了数据访问层的开发工作。这篇教程通过详细的讲解和实例,帮助读者理解和掌握iBATIS的核心功能和使用技巧。 ...

    iBatis Web用法实例

    iBatis 是一款著名的开源持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,提供了灵活的数据库交互方式,避免了过多的JDBC代码和手动设置参数以及获取结果集。在这个"iBatis Web用法实例"中,我们将深入...

    一个ibatis实例

    Ibatis,又称为SQL Map,是一个优秀的持久层框架,它允许程序员将SQL语句直接写在配置文件中,与Java代码进行分离,从而降低了数据库操作的复杂性,提高了开发效率。Ibatis的主要目标是简化数据访问层(DAL)的实现...

    IBATIS开发使用实例

    本文将围绕“IBATIS开发使用实例”这一主题,深入解析复杂SQL查询的应用,尤其是如何利用SQL进行多表关联、条件筛选以及聚合函数的使用。 ### IBATIS简介 IBATIS,现被称为MyBatis,是一种优秀的持久层框架,它...

    iBatis入门实例详细代码

    iBatis是一个轻量级的Java持久层框架,它提供了SQL映射框架,将SQL语句与Java代码分离,使得开发者能够更灵活地控制数据库操作。在这个“iBatis入门实例详细代码”中,我们将深入探讨如何使用iBatis与MySQL数据库...

    Ibatis开发实例

    在这个项目中,我们可以通过一系列步骤来了解如何使用 Ibatis 来进行数据库操作。 ##### 2.1 领域对象与映射文件 在 Spring 宠物店项目中,一个示例领域对象为 `Product` 类,如代码10.13所示。这个类代表了一个...

    ibatis完整实例

    在这个"ibatis 完整实例"中,我们将会探讨如何使用 Ibatis 2.0 版本来搭建和运行一个实际的项目,以及它所带来的诸多优势。 首先,让我们了解 Ibatis 的核心概念。Ibatis 提供了 XML 配置文件,用于定义 SQL 映射...

Global site tag (gtag.js) - Google Analytics