代码之家  ›  专栏  ›  技术社区  ›  Umar.H

在sum-sqlserver中嵌套Case语句

  •  0
  • Umar.H  · 技术社区  · 6 年前

    对此有问题:

    我有下面的问题,给了我确切的看法,我需要。

    SELECT t.Week,
           SUM(t.Hours) AS AH,
           SUM(c.Input) AS input,
           SUM(c.[recruitedPos]) AS recruitedPos,
           (SUM(t.Hours) - SUM(c.Input)) AS Possible
    FROM tempPOC AS t
         LEFT JOIN (SELECT Week,
                           SUM(input) AS Input,
                           SUM([Normal Weekly Hours]) AS recruitedPos,
                           Shop
                    FROM colData
                    GROUP BY week,
                             Shop) AS c ON t.Week = c.Week
                                       AND c.Shop = t.Store
    GROUP BY t.Week,
             t.Store
    ORDER BY t.Week;
    

    我遇到的问题是编写一个case语句,如果值小于0,则将可能的alias中的任何值设置为0。

    (CASE(SUM(t.Hours - c.Hours)) < 0 then 0 else Possible end as Possible)
    

    但这给了我一个错误

    消息156,15级,状态1,第9行

    Week, AH, Input, RecruitedPos, Possible
    1,    15, 25,    13,            -10
    1,    30, 15,    15,            15
    

    预期产量:

    Week, AH, Input, RecruitedPos, Possible
    1,    15, 25,    13,            0  
    1,    30, 15,    15,            15
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   ruohola    6 年前
    CASE
        WHEN SUM(t.Hours) - SUM(c.Input) < 0 THEN 0
        ELSE SUM(t.Hours) - SUM(c.Input)
    END AS Possible