2016-06-24 3 views
0

Я пытаюсь вычислить SUM из MEMDISC, но я получаю эту ошибку на хранимую процедуруSUM в хранимой процедуре

Column «dbo.ZZ.CNUM недопустим в списке выбора, потому что это не содержащихся либо в агрегатной функции, либо в предложении GROUP BY.

Это мой код

select 
    CNUM, 
    DESCRIPT, 
    ZCONTDESC, 
    substring(str(OCCDATE),9,2) + '/'+ substring(str(OCCDATE),7,2) + '/' + substring(str(OCCDATE),3,4), 
    COWNNUM, 
    CAST((CAST(substring(str(ANVDATE),3,4) AS INT) -1) AS CHAR(4))+'-' +substring(str(ANVDATE),3,4), 
    sum(MEMDISC) 
from 
    dbo.ZZ 

Что это должно выглядеть?

+5

Если у вас есть какая-либо функция агрегации (SUM, AVG, MIN и MAX), вы должны использовать предложение GROUP BY. – Lucky

+2

Похоже, вам нужно больше образования SQL. И это помогает добавить, какой тип базы данных вы используете. Поскольку нет обратных ссылок, это, вероятно, не MySQL. И никаких двойных труб, возможно, тоже не Oracle. MS SQL-Server? Во всяком случае, как сказал Лаки. Поскольку вы используете агрегированную функцию, такую ​​как SUM, вам нужно добавить группу. Или удалите сумму. – LukStorms

ответ

1

Как было предложено в комментариях @Lucky и @LukStorms, при использовании функций агрегации вам необходимо указать GROUP BY все поля, которые не включены в функцию агрегации. В вашем случае вам нужно что-то вроде этого:

select CNUM, DESCRIPT, ZCONTDESC, 
    substring(str(OCCDATE),9,2) + '/'+ substring(str(OCCDATE),7,2) + '/' + substring(str(OCCDATE),3,4), 
    COWNNUM, 
    CAST((CAST(substring(str(ANVDATE),3,4) AS INT) -1) AS CHAR(4))+'-' +substring(str(ANVDATE),3,4), 
    sum(MEMDISC) 
    from dbo.ZZ 
group by CNUM, DESCRIPT, ZCONTDESC, 
    substring(str(OCCDATE),9,2) + '/'+ substring(str(OCCDATE),7,2) + '/' + substring(str(OCCDATE),3,4), 
    COWNNUM, 
    CAST((CAST(substring(str(ANVDATE),3,4) AS INT) -1) AS CHAR(4))+'-' +substring(str(ANVDATE),3,4), 
+0

Спасибо за ваше время. Теперь я понял, как работает sum()! – r511

+0

Рад помочь, и добро пожаловать в переполнение стека. Если этот ответ или любой другой решают вашу проблему, отметьте его как принятый. –

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