2015-08-24 1 views
-4

У меня есть запрос, когда я выбираю код поставщика, имя поставщика, дебетовый, кредитный и дебетовый минус кредита в качестве окончательного баланса.Игнорирование 0 Значения от операции в SQL

Как игнорировать 0 значений для окончательного баланса?

SELECT min(t1.ShortName), min(t0.cardname), 
    str(sum(t1.debit),15,2), str(sum(t1.Credit),13,2), 
    str(isnull(sum(T1.DEBIT) - abs(sum(T1.CREDIT)),0),13,2)[FINAL] 
FROM JDT1 t1 
INNER JOIN OCRD t0 ON t1.ShortName = t0.CardCode 
WHERE t0.CardType = 'S' AND year(t1.taxDate) = year(@Fecha) 
GROUP BY t1.ShortName, t0.CardName 
ORDER BY t1.ShortName 

ответ

3

Все, что вам нужно сделать, это добавить к имеющий пункт:

SELECT Min(t1.ShortName), 
     Min(t0.cardname), 
     Str(Sum(t1.debit), 15, 2), 
     Str(Sum(t1.Credit), 13, 2), 
     Str(Isnull(Sum(T1.DEBIT) - Abs(Sum(T1.CREDIT)), 0), 13, 2)[FINAL] 

    FROM JDT1 t1 
     INNER JOIN OCRD t0 
       ON t1.ShortName = t0.CardCode 
WHERE t0.CardType = 'S' 
    AND Year(t1.taxDate) = Year(@Fecha) 
GROUP BY t1.ShortName, 
      t0.CardName 
having Str(Isnull(Sum(T1.DEBIT) - Abs(Sum(T1.CREDIT)), 0), 13, 2) <> 0 
ORDER BY t1.ShortName 
+0

Я получаю такая же ошибка при сравнении с int, Ошибка конверсии при преобразовании значения varchar '0.00' в тип данных int. , и когда я сравниваю как символ, я получаю одинаковые результаты, без изменений/игнорирования 0's –

+0

Ой нашел это, я держал STR в моей статье –

2

дамп результатов в таблицу #temp, а затем выбрать из этой таблицы с ИНЕКЕМ с вашим состоянием, должны выглядеть следующим образом:

SELECT Min(t1.ShortName), 
     Min(t0.cardname), 
     Str(Sum(t1.debit), 15, 2), 
     Str(Sum(t1.Credit), 13, 2), 
     Str(Isnull(Sum(T1.DEBIT) - Abs(Sum(T1.CREDIT)), 0), 13, 2)[FINAL] 
     into #temp 
    FROM JDT1 t1 
     INNER JOIN OCRD t0 
       ON t1.ShortName = t0.CardCode 
WHERE t0.CardType = 'S' 
    AND Year(t1.taxDate) = Year(@Fecha) 
GROUP BY t1.ShortName, 
      t0.CardName 
ORDER BY t1.ShortName 

SELECT * FROM #temp where FINAL <> '0' 
+0

Я получаю следующее сообщение об ошибке: Конверсия удалось при преобразовании значения VARCHAR «-2446290.95» для типа данных Int. Поскольку я не создавал эту базу данных, я испытываю трудности даже при поиске значений, это не тот тип, который я думал/ожидал –

+0

И при запуске '0' я получаю те же результаты, никаких отличий от полученных результатов –

+0

Возможно, поле, WHERE cast (FINAL as integer) <> 0 –

Смежные вопросы