gpt4 book ai didi

MySQL 子查询结果,但也在其上放置条件

转载 作者:行者123 更新时间:2023-11-30 22:39:03 25 4
gpt4 key购买 nike

我正在尝试在高度规范化的数据库上构建查询,其中许多客户字段和值保存在不同的表中。这意味着我已经创建了一个子查询来返回自定义字段中的值:

SELECT
LA.ID
,GRP.GROUPNAME
,LP.PRODUCTNAME
,LA.ACCOUNTSTATE
,(LA.FEESBALANCE+LA.PENALTYBALANCE+LA.INTERESTBALANCE+LA.PRINCIPALBALANCE) AS ACCOUNTBALANCE
,AD.POSTCODE
, (SELECT cv.`VALUE` as vl FROM customfieldvalue cv JOIN customfield cf on cv.CUSTOMFIELDKEY = cf.ENCODEDKEY
WHERE LA.ENCODEDKEY = cv.PARENTKEY AND cf.ID = 'ON_Watch_List_Corporate') as 'watchstatus'
, (SELECT cv.`VALUE` as vl FROM customfieldvalue cv JOIN customfield cf on cv.CUSTOMFIELDKEY = cf.ENCODEDKEY
WHERE LA.ENCODEDKEY = cv.PARENTKEY AND cf.ID = 'ON_RI-07') as 'PROVISIONAMOUNT'
, (SELECT cv.`VALUE` as vl FROM customfieldvalue cv JOIN customfield cf on cv.CUSTOMFIELDKEY = cf.ENCODEDKEY
WHERE LA.ENCODEDKEY = cv.PARENTKEY AND cf.ID = 'ON_Security/Collateral_GV') as 'SECUITY/COLLATERAL'
, (SELECT cv.`VALUE` as vl FROM customfieldvalue cv JOIN customfield cf on cv.CUSTOMFIELDKEY = cf.ENCODEDKEY
WHERE LA.ENCODEDKEY = cv.PARENTKEY AND cf.ID = 'ON_Property_Current_Value') as 'PROPERTYVALUE'


FROM

LOANACCOUNT LA
,LOANPRODUCT LP
,group GRP
,CUSTOMFIELD CF
,CUSTOMFIELDVALUE CV
,ADDRESS AD
,ACTIVITY AT


WHERE

LA.PRODUCTTYPEKEY = LP.ENCODEDKEY
AND LA.ACCOUNTHOLDERKEY = GRP.ENCODEDKEY
AND GRP.ENCODEDKEY = AD.PARENTKEY

但是,我还需要在 WHERE 条件中包含字段 PROVISIONAMOUNT - 即大于 0。

如果这很明显,我深表歉意,但我是 SQL 的新手,我找不到任何可以证明是否可以做到的信息。

感谢任何可能对此提供帮助的人。

最佳答案

查看您的查询一段时间后,我认为它可以重写如下,这在功能上应该是等效的,但添加了 PROVISIONAMOUNT > 0 条件。它应该更易于阅读并且性能也更好。

在原始版本中,您包含了表ACTIVITY AT,但我看不到它在任何地方被使用,所以我删除了它。

这应该有效,除非我错过了一些重要的细节。请试一试,如果不起作用,我会删除我的答案。

SELECT
LA.ID
, GRP.GROUPNAME
, LP.PRODUCTNAME
, LA.ACCOUNTSTATE
, (LA.FEESBALANCE+LA.PENALTYBALANCE+LA.INTERESTBALANCE+LA.PRINCIPALBALANCE) AS ACCOUNTBALANCE
, AD.POSTCODE
, MAX(CASE WHEN cf.ID = 'ON_Watch_List_Corporate' THEN cv.value END) AS 'watchstatus'
, MAX(CASE WHEN cf.ID = 'ON_RI-07' THEN cv.value END) AS 'PROVISIONAMOUNT'
, MAX(CASE WHEN cf.ID = 'ON_Security/Collateral_GV' THEN cv.value END) AS 'SECUITY/COLLATERAL'
, MAX(CASE WHEN cf.ID = 'ON_Property_Current_Value' THEN cv.value END) AS 'PROPERTYVALUE'

FROM
LOANACCOUNT LA
JOIN
LOANPRODUCT LP ON LA.PRODUCTTYPEKEY = LP.ENCODEDKEY
JOIN
"group" GRP ON LA.ACCOUNTHOLDERKEY = GRP.ENCODEDKEY
JOIN
"ADDRESS" AD ON GRP.ENCODEDKEY = AD.PARENTKEY
JOIN
customfieldvalue cv ON LA.ENCODEDKEY = cv.PARENTKEY
JOIN
customfield cf ON cv.CUSTOMFIELDKEY = cf.ENCODEDKEY

GROUP BY
LA.ID
, GRP.GROUPNAME
, LP.PRODUCTNAME
, LA.ACCOUNTSTATE
, (LA.FEESBALANCE+LA.PENALTYBALANCE+LA.INTERESTBALANCE+LA.PRINCIPALBALANCE)
, AD.POSTCODE
HAVING MAX(CASE WHEN cf.ID = 'ON_RI-07' THEN cv.value END) > 0

关于MySQL 子查询结果,但也在其上放置条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31610328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com