我正在使用具有多个"代码"或"id"关联的表中的列/字段。
表afacctbal有一个名为afacbbalid的列/字段,其中的可能性可以是COST,PRN或COLL。
我遇到的问题是拉动帐户上 COST 等于 0 的行。
我在 where 子句中尝试了一个子查询的 SQL 语句,但返回了一个一般错误。现在我正在尝试一个 IN 语句,但这似乎也不起作用。
这是我得到的:
select araccount.aracid as AccountID, arentity.arenst State, arentity.ARENNAME ClientName,
afaccount.afaccurbal CurrentBal, afacctbal.afacbcurbal PrincipalBal,
afacctbal.AFACBbalid
from araccount
inner join arrelationship on araccount.aracid = arrelationship.arrelacid
inner join arentity on arentity.arenid = arrelationship.ARRELENID
inner join afaccount on afaccount.afacacctid = araccount.ARACID
inner join afacctbal on afaccount.AFACKEY = afacctbal.AFACBACCTID
where afacctbal.afacbbalid in("COST",0)
and afaccount.AFACRATEID = "MN100"
and arentity.ARENST = "MN"
and araccount.araclstdte > "2013-04-01"
order by afaccount.afaccurbal
问题出在我的 where 条款中这里:
where afacctbal.afacbbalid in("COST",0)
我将如何检查成本并检查它是否等于 0?
AFACCTBAL TABLLE使用的值: 阿法克巴利德 -- 余额ID AFACBCURBAL -- 每个余额 ID 的余额金额。表税表使用的值: AFACCURBAL -- 当前余额
您正在使用字符串"COST"
然后0
整数。因此,您需要在afacctbal.afacbbalid
具有的列的数据类型中强制转换两者。
下面的查询将满足您的要求 -
select araccount.aracid as AccountID, arentity.arenst State, arentity.ARENNAME ClientName,
afaccount.afaccurbal CurrentBal, afacctbal.afacbcurbal PrincipalBal,
afacctbal.AFACBbalid
from araccount
inner join arrelationship on araccount.aracid = arrelationship.arrelacid
inner join arentity on arentity.arenid = arrelationship.ARRELENID
inner join afaccount on afaccount.afacacctid = araccount.ARACID
inner join afacctbal on afaccount.AFACKEY = afacctbal.AFACBACCTID
where ((afacctbal.afacbbalid ='COST'
and afaccurbal.currentBal = 0) or
(afacctbal.afacbbalid ='PRN'
and afaccurbal.currentBal > 0))
and afaccount.AFACRATEID = "MN100"
and arentity.ARENST = "MN"
and araccount.araclstdte > "2013-04-01"
order by afaccount.afaccurbal