2017-01-25 3 views
-1

Я получаю ошибку с последующим кодом: «Msg 144, Level 15, State 1, Line 17 Невозможно использовать агрегат или подзапрос в выражении, используемом для группы по списку предложения 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

Вы не можете использовать SUM или COUNT (агрегатов) в GROUP BY предложения. Совокупные значения должны вычисляться после определения групп.

Кроме того, ваш CASE не имеет предложения ELSE.

+0

Кроме того, у вас есть поля в SELECT, которые не объединены и не сгруппированы. – SunKnight0

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