2017-01-25 65 views
-1

我收到以下代碼錯誤:「消息144,級別15,狀態1,行17 不能在用於GROUP BY子句的group by列表的表達式中使用聚合或子查詢。 「多個條件與Groupby

SELECT [sddoc], 
    [Soldtopt], 
    [tradingname], 
    [DlvDate], 
    SUM(try_cast(Netvalue AS FLOAT)) AS Netvalue, 
    COUNT(DISTINCT SDDoc) AS Salesdoc , 
    COUNT(DISTINCT 
    CASE 
    WHEN Netvalue = '0' 
    THEN 1 
    ELSE NULL 
    END) AS ZeroValue , 
    COUNT(DISTINCT SDDoc) - COUNT(DISTINCT 
    CASE 
    WHEN Netvalue = '0' 
    THEN 1 
    ELSE NULL 
    END) AS Result 
FROM d1 
WHERE dlvdate='25.01.2017' 
GROUP BY 
    CASE 
    WHEN SUM(try_cast(Netvalue AS FLOAT)) = 0 
    AND COUNT(DISTINCT SDDoc)    = 1 
    AND COUNT(DISTINCT 
     CASE 
     WHEN Netvalue = '0' 
     THEN 1 
     ELSE NULL 
     END) = 1 
    THEN [sddoc] 
    END, 
    Soldtopt, 
    tradingname, 
    DlvDate 

回答

1

你不能在GROUP使用SUM或COUNT(聚集)BY子句。在定義組之後,必須計算聚合值。

另外,您的CASE缺少ELSE子句。

+0

另外,您在SELECT中沒有聚合或分組的字段。 – SunKnight0