Оператор SQL IN не проверяется правильно?
Я работаю со столбцом / полем из таблицы, с которой связано несколько "кодов" или "идентификаторов".
Таблица afacctbal имеет столбец / поле, называемое afacbbalid, где возможны значения COST, PRN или COLL.
То, с чем у меня проблемы, - это вытягивание строк, где COST равен 0 на счете.
Я пробовал подзапрошенный оператор SQL в предложении where, но возвращает общую ошибку. Сейчас я пытаюсь сделать заявление 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 afacctbal.afacbbalid in("COST",0)
Как бы я проверил COST и проверил, равно ли оно 0?
AFACCTBAL TABLLE Используемые значения: afacbbalid - идентификатор баланса afacbcurbal - сумма баланса на идентификатор баланса. Таблица использованных значений afaccount: afaccurbal - текущий баланс
2 ответа
Ты используешь "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