Как перечислить результат в пустых или пустых данных с SQL Server, имеющих сумму?

Как составить список товаров, которых нет (ноль = 0)?

STHAR TABLE

id        STHAR_GCKOD        STHAR_GCMIK
------------------------------------------------
1             NULL               NULL
99             G                  2
99             C                  2
1525           G                  3
1525           C                  2
------------------------------------------------

NOTE: G = (+)  /  C = (-)

РЕЗУЛЬТАТ

ID 1;     Not found in result, i want to found in result (TOTAL : 0)
ID 99;    TOTAL : 0
ID 1525;  TOTAL : 1

Мой код:

SELECT 
   B.STOK_KODU, B.STOK_ADI, B.URETICI_KODU, B.KOD_1,
   SUM(CASE A.STHAR_GCKOD 
         WHEN 'G' THEN STHAR_GCMIK 
         ELSE - STHAR_GCMIK 
       END) BAKIYE
FROM 
    LSTHAR A
RIGHT OUTER JOIN 
    TBLSTSABIT B ON B.STOK_KODU=A.STOK_KODU
GROUP BY 
    B.STOK_KODU, B.STOK_ADI, B.URETICI_KODU, B.KOD_1
HAVING
    SUM(CASE A.STHAR_GCKOD WHEN 'G' THEN STHAR_GCMIK 
                           ELSE - STHAR_GCMIK END) < B.KOD_6
ORDER BY 
    B.STOK_KODU ASC

Не удается найти в списке результатов нулевые или пустые данные,

Пусть список результатов в том, что я хотел бы

возможный?

Спасибо..

1 ответ

Решение

Попробуй это

SELECT 
   B.STOK_KODU, B.STOK_ADI, B.URETICI_KODU, B.KOD_1,
   SUM(CASE A.STHAR_GCKOD 
         WHEN 'G' THEN STHAR_GCMIK 
         ELSE ISNULL(- STHAR_GCMIK,0) END) 
       END) BAKIYE
FROM 
    LSTHAR A
RIGHT OUTER JOIN 
    TBLSTSABIT B ON B.STOK_KODU=A.STOK_KODU
GROUP BY 
    B.STOK_KODU, B.STOK_ADI, B.URETICI_KODU, B.KOD_1
HAVING
    SUM(CASE A.STHAR_GCKOD WHEN 'G' THEN STHAR_GCMIK 
                           ELSE ISNULL(- STHAR_GCMIK,0) END) < B.KOD_6
ORDER BY 
    B.STOK_KODU ASC

РЕДАКТИРОВАТЬ: Не уверен, почему вы получили сообщение об ошибке. Однако проблема, связанная с отсутствием значения NULL в исходном запросе, заключается в приведенном ниже статуте CASE.

CASE A.STHAR_GCKOD 
         WHEN 'G' THEN STHAR_GCMIK 
         ELSE - STHAR_GCMIK 
       END

Вы также можете попробовать это, что более понятно

CASE WHEN A.STHAR_GCKOD = 'G' THEN  STHAR_GCMIK 
     WHEN A.STHAR_GCKOD = 'C' THEN - STHAR_GCMIK 
     WHEN A.STHAR_GCKOD IS NULL THEN 0
END 
Другие вопросы по тегам