求助sql语句,多个join嵌套
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助sql语句,多个join嵌套相关的知识,希望对你有一定的参考价值。
有两张表A和B,表A为贷款台账,有借据编号(TARG_NO)、客户号(CUST_NO)、贷款起始日(START_DATE)这几个字段;表B为客户台账,有客户号(CUST_NO)、证件号(PBK_NUM)两个字段(见图)。注:一个客户存在多笔贷款,客户号的值不统一,有的为客户号,有的实际是客户的证件号码。现希望查询客户在表A中最早的那一笔贷款的所有信息。需要先把客户的证件号(PBK_NUM)加入至表A中,再通过(PBK_NUM)找出该客户日期最早的一笔贷款,得到借据编号(TARG_NO),列出每个客户首笔贷款在表A中的所有字段。万分感谢!
参考技术A BSEG 是cluster table(簇表),不能做 inner joint 或者 left join/right join你可以分开做两次查询 BKPF 和 BSEG ,这样就没问题了不过要注意效率,呵呵多个left join结合动态sql的代码语句
<sql id="unionColumns">
b.id AS id
, b.gmt_create AS gmtCreate
, b.gmt_modified AS gmtModified
, b.corp_id AS corpId
, b.corp_name AS corpName
</sql>
<sql id="baseColumns">
b.id,
b.gmt_create,
b.gmt_modified,
b.corp_id,
b.corp_name,
e.assign_time,
</sql>
<sql id="Where_CorpDeploy">
<if test="corpId != null">
and b.corp_id = #{corpId}
</if>
<if test="corpName != null">
and b.corp_name LIKE concat('%',#{corpName},'%')
</if>
</sql>
<sql id="limitSql">
limit
<if test="pageNo > 0">
#{start},
</if>
<if test="pageNo=0">0,</if>
#{pageSize}
</sql>
<select id="xxxDeployDO" resultType="xxx.DeployDO"
parameterType="xxx.Query">
SELECT
<include refid="unionColumns"/>
FROM (
SELECT
<include refid="baseColumns"/>
FROM corp_deploy_info b
left join corp_deploy_assign e
on e.id = b.deploy_assign_id
left join corp_gmv c
on b.corp_id = c.corp_id
WHERE 1 = 1
<include refid="Where_CorpDeploy"/>
<include refid="limitSql"/>
)b
left join corp_gmv c
on b.corp_id = c.corp_id
</select>
以上是关于求助sql语句,多个join嵌套的主要内容,如果未能解决你的问题,请参考以下文章