Оператор 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
Другие вопросы по тегам