【问题标题】:How to list result in null or empty data from SQL Server having sum?如何从具有总和的 SQL Server 中列出结果为空或空数据?
【发布时间】:2013-04-24 12:19:35
【问题描述】:

如何列出非(null = 0)的产品?

STHAR 表

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

找不到结果列表为null或空数据,

让列表中的结果是我想要的

可能吗?

谢谢你..

【问题讨论】:

    标签: sql-server select null sum having


    【解决方案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 
    

    【讨论】:

    • SUM(CASE A.STHAR_GCKOD WHEN 'G' THEN STHAR_GCMIK ELSE ISNULL(- STHAR_GCMIK,0) END) END) BAKIYE,不正确的 END) END),正确:END)
    猜你喜欢
    • 2013-08-14
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多