0

我正在处理表中的列/字段,该表具有多个与之关联的“代码”或“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)

我将如何检查 COST 并检查它是否等于 0?

AFACCTBAL TABLLE 使用值: afacbbalid -- 余额 id afacbcurbal -- 每个余额 id 的余额。afaccount 表使用的值: afaccurbal -- 当前余额

4

2 回答 2

0

您使用"COST"的是字符串,然后0是整数。因此,您需要在列afacctbal.afacbbalid所具有的数据类型中进行强制转换。

于 2016-03-07T16:26:35.673 回答
0

我认为以下查询将满足您的要求 -

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
于 2016-03-07T16:36:05.303 回答