<!--  分页查询派货成本  -->
<select id="queryCostRegionPriceBycondtion" parameterMap="CostRegionPriceQueryEntity" resultMap="CostRegionPriceResultEntity">
SELECT
b.AUDIT_HOUR,
b.OPER_STATUS,
b.RELE_ID,
b.STAR_REGION_ID,
b.END_REGION_ID,
b.START_REGION__NAME,
b.END_REGION_NAME,
b.CREATE_USER_CODE||'('||e1.EMPLOYEE_NAME||')' CREATE_USER_CODE,
b.MODIFY_USER_CODE,
b.CREATE_TIME,
b.MODIFY_TIME,
b.DEL_FLAG,
b.REMARK,
b.COST_NAME,
b.START_REGION_TYPE,
b.END_REGION_TYPE,
b.CALC_TYPE,
b.BIZ_TYPE,
b.TIME_CODE,
b.PRODUCT_CODE,
b.DIS_TYPE,
b.START_TIME,
b.END_TIME,
b.PRICE_ITEM_CODE, c.audit_time,
c.audit_user_code||'('||e2.EMPLOYEE_NAME||')' audit_user_code,
case WHEN
c.AUDIT_STATUS = 0 and
<![CDATA[SYSDATE > c.START_TIME]]>
then 2
WHEN
c.AUDIT_STATUS = 0 and
<![CDATA[SYSDATE < c.START_TIME]]>
then 0
WHEN
c.AUDIT_STATUS = 1 then 1
WHEN
c.AUDIT_STATUS = -1 then -1
ELSE 4
END AUDIT_STATUS
FROM
T_COST_REGION_PRICE b left join T_BASE_EMPLOYEE e1
on b.CREATE_USER_CODE = e1.EMPLOYEE_CODE
left join
(
SELECT
A .audit_time,
A .audit_user_code,
A .rele_id,
A .AUDIT_status,
A.START_TIME,
A.audit_hour
FROM
(
SELECT
ROW_NUMBER () OVER (
PARTITION BY T .rele_id
ORDER BY
T .audit_time ASC
) AS rn,
T .*
FROM
t_cost_price_ad T
where 1=1 ) A
WHERE
A .rn = 1
) c
on b.rele_id=c.rele_id
left join T_BASE_EMPLOYEE e2
on c.audit_user_code =e2.EMPLOYEE_CODE
WHERE 1=1
<if test="auditStatus == 0" >
and c.AUDIT_STATUS = '0' and
<![CDATA[SYSDATE < c.START_TIME]]>
</if>
<if test="auditStatus == 1" >
and c.AUDIT_STATUS = #{auditStatus,jdbcType=NUMERIC}
</if>
<if test="auditStatus == -1" >
and c.AUDIT_STATUS = #{auditStatus,jdbcType=NUMERIC}
</if>
<if test="auditStatus == 2" >
and c.AUDIT_STATUS = '0' and
<![CDATA[SYSDATE > c.START_TIME]]>
</if>
<!-- 报价名称 -->
<if test="costName != null and costName !=''" >
AND b.COST_NAME like concat(concat('%',#{costName,jdbcType=VARCHAR}),'%')
</if>
<!-- 产品类型 -->
<if test="productCode != null and productCode !=''" >
AND b.PRODUCT_CODE = #{productCode,jdbcType=NUMERIC}
</if>
<!-- 派送方式 -->
<if test="disType != null and disType !='' or disType == 0" >
AND b.DIS_TYPE = #{disType,jdbcType=NUMERIC}
</if>
<!-- 开始派货区间 -->
<if test="starRegionId != null and starRegionId !='' and starRegionId !='empty'" >
AND b.STAR_REGION_ID = #{starRegionId,jdbcType=VARCHAR}
</if>
<!-- 结束派货区间 -->
<if test="endRegionId != null and endRegionId !='' and endRegionId !='empty'" >
AND b.END_REGION_ID = #{endRegionId,jdbcType=VARCHAR}
</if>
<!-- 业务类型 -->
<if test="bizType != null and bizType !=''" >
AND b.BIZ_TYPE = #{bizType,jdbcType=NUMERIC}
</if>
<!-- 启用状态-->
<if test="delFlag != null and delFlag !=''" >
AND b.DEL_FLAG = #{delFlag,jdbcType=NUMERIC}
</if>
<!-- 产品时效-->
<if test="timeCode != null and timeCode !=''" >
AND b.TIME_CODE = #{timeCode,jdbcType=NUMERIC}
</if>
<!-- 计费类型-->
<if test="calcType != null and calcType !=''" >
AND b.CALC_TYPE = #{calcType,jdbcType=NUMERIC}
</if>
<if test="startTimeStart != null and startTimeEnd != null">
and <![CDATA[ b.START_TIME >= #{startTimeStart,jdbcType=TIMESTAMP}]]>
and <![CDATA[ b.START_TIME <= #{startTimeEnd,jdbcType=TIMESTAMP}]]>
</if>
<if test="endTimeStart != null and endTimeEnd != null">
and <![CDATA[ b.END_TIME >= #{endTimeStart,jdbcType=TIMESTAMP}]]>
and <![CDATA[ b.END_TIME <= #{endTimeEnd,jdbcType=TIMESTAMP}]]>
</if>
<!-- 计费类型-->
<if test="priceItemCode != null and priceItemCode !=''" >
AND b.PRICE_ITEM_CODE = #{priceItemCode,jdbcType=NUMERIC}
</if>
order by b.CREATE_TIME desc
</select>

  

SELECT b.AUDIT_HOUR, b.OPER_STATUS, b.RELE_ID, b.STAR_REGION_ID, b.END_REGION_ID, b.START_REGION__NAME, b.END_REGION_NAME, b.CREATE_USER_CODE||'('||e1.EMPLOYEE_NAME||')' CREATE_USER_CODE, b.MODIFY_USER_CODE, b.CREATE_TIME, b.MODIFY_TIME, b.DEL_FLAG, b.REMARK, b.COST_NAME, b.START_REGION_TYPE, b.END_REGION_TYPE, b.CALC_TYPE, b.BIZ_TYPE, b.TIME_CODE, b.PRODUCT_CODE, b.DIS_TYPE, b.START_TIME, b.END_TIME, b.PRICE_ITEM_CODE, c.audit_time, c.audit_user_code||'('||e2.EMPLOYEE_NAME||')' audit_user_code FROM T_COST_REGION_PRICE b left join T_BASE_EMPLOYEE e1 on b.CREATE_USER_CODE = e1.EMPLOYEE_CODE left join ( SELECT A .audit_time, A .audit_user_code, A .rele_id, A .AUDIT_status, A.START_TIME, A.audit_hour FROM ( SELECT ROW_NUMBER () OVER ( PARTITION BY T .rele_id ORDER BY T .audit_time ASC ) AS rn, T .* FROM t_cost_price_ad T where 1=1 ) A WHERE A .rn = 1 ) c on b.rele_id=c.rele_id left join T_BASE_EMPLOYEE e2 on c.audit_user_code =e2.EMPLOYEE_CODE WHERE 1=1

  

SELECT
A .audit_time,
A .audit_user_code,
A .rele_id,
A .AUDIT_status,
A.START_TIME,
A.audit_hour
FROM
(
SELECT
ROW_NUMBER () OVER (
PARTITION BY T .rele_id
ORDER BY
T .audit_time ASC
) AS rn,
T .*
FROM
t_cost_price_ad T
where 1=1 ) A
WHERE
A .rn = 1

一对多,(多)条件符合,取(多)时间最近的信息

一对多sql的更多相关文章

  1. HQL之多表查询(一对多和多对多)

    一.一对多 以班级Classes和学生Student为例:   回忆sql语句: //内链接,两种方式效果一样,查询的是两边都有的数据 SELECT c.*,s.* FROM classes c,st ...

  2. mysql基础知识(3)

    十六.组合查询 使用 union 来组合查询,如果第一个查询返回M行,第二个查询返回N行,那么组合查询的结果一般为 M+N 行. 注意:每个查询必须包含相同的行.表达式的聚集函数:默认会去除相同行.表 ...

  3. mybatis 联结查询

    一.查询 员工(tbl_employee)时,关联 查询出 员工对于的部门信息 (tab1_dept),一对一查询,或者多对一查询 适用 emp bean里面 包含 部门bean dept属性对象 1 ...

  4. Mybatis学习的一些细节

    一.mybatis 基本配置 最近几天一直在学习mybatis,看了一些源码,本文讲述mybatis的一些基本配置和基本的用法和注意到一些细节.个人时间和精力有限,本文属于流水账类型,不成体系,算是自 ...

  5. mybatis的动态sql编写以及一对一关系查询和一对多的查询

    创建mybatis数据库,运行以下sql语句 /* SQLyog Ultimate v8.32 MySQL - 5.5.27 : Database - mybatis **************** ...

  6. PD 15.1 安装 破解 , 简单使用 (一对多,多对多关系生成sql脚本) , CDM 和 PDM 的区别;PD15.1 生成sql2008 无FK外键约束的解决方法

    CDM是概念模型,在概念模型上没有具体数据库产品的概念,反映的是实体和联系.PDM是物理模型,是依赖具体数据库产品的模型,比如可以指定具体的数据类型和约束等等.在PowerDesigner中两个模型之 ...

  7. 数据库表设计时一对一关系存在的必要性 数据库一对一、一对多、多对多设计 面试逻辑题3.31 sql server 查询某个表被哪些存储过程调用 DataTable根据字段去重 .Net Core Cors中间件解析 分析MySQL中哪些情况下数据库索引会失效

    数据库表设计时一对一关系存在的必要性 2017年07月24日 10:01:07 阅读数:694 在表设计过程中,我无意中觉得一对一关系觉得好没道理,直接放到一张表中不就可以了吗?真是说,网上信息什么都 ...

  8. Django---Django的ORM的一对多操作(外键操作),ORM的多对多操作(关系管理对象),ORM的分组聚合,ORM的F字段查询和Q字段条件查询,Django的事务操作,额外(Django的终端打印SQL语句,脚本调试)

    Django---Django的ORM的一对多操作(外键操作),ORM的多对多操作(关系管理对象),ORM的分组聚合,ORM的F字段查询和Q字段条件查询,Django的事务操作,额外(Django的终 ...

  9. SQL的一对多,多对一,一对一,多对多什么意思?

    1.一对多:比如说一个班级有很多学生,可是这个班级只有一个班主任.在这个班级中随便找一个人,就会知道他们的班主任是谁:知道了这个班主任就会知道有哪几个学生.这里班主任和学生的关系就是一对多. 2.多对 ...

随机推荐

  1. Cannot reinitialise DataTable 问题

    加个 destroy:true,   //Cannot reinitialise DataTable,解决重新加载表格内容问题

  2. 1152 Google Recruitment (20 分)

    In July 2004, Google posted on a giant billboard along Highway 101 in Silicon Valley (shown in the p ...

  3. Q205 同构字符串

    给定两个字符串 s 和 t,判断它们是否是同构的. 如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的. 所有出现的字符都必须用另一个字符替换,同时保留字符的顺序.两个字符不能映射到同一 ...

  4. EntityFramework 并发处理

    转载自:http://www.cnblogs.com/TianFang/p/4439215.html 什么是并发? 并发分悲观并发和乐观并发. 悲观并发:比如有两个用户A,B,同时登录系统修改一个文档 ...

  5. qs.parse()、qs.stringify()、JSON.parse()、JSON.stringify()使用方法

    一.JSON.parse(用于从一个字符串中解析出json 对象)ps:单引号写在{}外,每个属性都必须双引号,否则会抛出异常 let str = '[{"field":" ...

  6. ReactJS 页面跳转保存当前scrollTop回来时,自动移动到上次浏览器的位置

    在移动端的操作的时候,相信大家都遇到到这种情况,翻了好几页了,点击一项进去查,然后回来的时候,还想回来我原来的位置. google上也找了一此,有一个组件,但是好像是如果想实现这个功能,页面就得用那个 ...

  7. (转)CentOS/Linux 解决 SSH 连接慢

    CentOS/Linux 解决 SSH 连接慢 原文:http://blog.csdn.net/doiido/article/details/43793391 现在连接linux服务器一般都是使用SS ...

  8. TT8509: PL/SQL execution terminated; PLSQL_TIMEOUT exceeded

    TT8509: PL/SQL execution terminated; PLSQL_TIMEOUT exceeded plsql_timeout连接超时,解决办法: ODBC pl/sql选项卡 修 ...

  9. 面试题-Java设计模式举例

    面试题-Java设计模式举例 1.适配器模式 涉及三个角色:Target目标接口.Adaptee源角色.Adapter适配器:Adapter将源接口适配到目标接口,继承源接口,实现目标接口. Java ...

  10. Linux利器strace

    strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式 ...