С помощью этого кода SQL я хочу получить сумму чистых сумм по каждому номеру позиции отдельно:
myquery = "SELECT distinct " & ItemNo & ", -SUM( " & NetAmount & " ) FROM " & table_TSE & _
" WHERE " & ItemNo & " IN " & Itemnr1 & _
" AND [Date] BETWEEN '" & date_from & "' AND '" & date_to & "'"
Но я получил ошибку:
Как я могу это решить?
2 ответа
Вам нужно иметь предложение «GROUP BY» и «HAVING» в конце вместо «WHERE» при использовании агрегатных функций, таких как «SUM».
В предложении «GROUP BY» вы указываете столбцы, в которых нет функции «SUM».
Тогда подумайте о «HAVING» как о предложении «WHERE».
Я не тестировал, но это должно сработать:
myquery = "SELECT DISTINCT" & ItemNo & ", -SUM( " & NetAmount & " ) FROM " & table_TSE & _
" GROUP BY [Date]," & ItemNo & " HAVING " & ItemNo & " IN " & Itemnr1 & _
" AND [Date] BETWEEN '" & date_from & "' AND '" & date_to & "'"
Позвольте мне знать, если это помогает!
Вот хороший источник: https://www.w3schools.com/sql/sql_having.asp< /а>
SUM() — это агрегатная функция в SQL, и при использовании в операторе select с другими неагрегатными столбцами она должна сопровождаться оператором GROUP BY, содержащим любые неагрегатные столбцы.
Рассмотрите возможность изменения запроса, включив в него
" GROUP BY " & ItemNo &
Справочный пример: https://www.simplilearn.com/tutorials /sql-tutorial/sql-aggregate-functions#sum_function
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.