Уравнение должно быть в группе по заявлению? - PullRequest
0 голосов
/ 10 октября 2019

Я получаю эту ошибку:

Столбец 'dbo.MainDB.Packaging Количество' недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.

Эта проблема возникла после того, как я добавил уравнение для Total, и я попытался добавить агрегатные функции в уравнение, но это просто дает мне неправильный вывод, если я добавлю их. Кроме того, если я добавлю его в группу group by, то он добавит ненужные группы, кто-нибудь знает решение?

Код:

SELECT 
    CONVERT(varchar,shipdate,101) AS Shipdate,
    ID, 
    [Last Name], 
    Address,
    SUM([Packaging Quantity]) AS Quantity,
    Size, 
    SUM(Cost) AS Price,
    ROUND(Size/[Packaging Quantity], 0) AS Total
FROM dbo.MainDB
WHERE 
    Shipdate BETWEEN '09/01/2019' AND '09/30/2019 11:59:59PM'
    AND Cost <> '0'
GROUP BY   
    CONVERT(VARCHAR, shipdate, 101),
    ID,
    [First Name],
    Address,
    Size

1 Ответ

0 голосов
/ 10 октября 2019

Сообщение об ошибке достаточно ясно.

SELECT 
    CONVERT(varchar,shipdate,101) AS Shipdate,
    ID, 
    [Last Name], 
    Address,
    SUM([Packaging Quantity]) AS Quantity,       -- aggregation on [Packaging Quantity]
    Size, 
    SUM(Cost) AS Price,
    ROUND(Size/[Packaging Quantity], 0) AS Total -- no aggregation on [Packaging Quantity]
FROM ...

Вам нужна функция агрегирования во втором подсвеченном случае [Packaging Quantity]. Учитывая тот факт, что вы SUM первый раз, это предполагает, что вы хотите агрегировать таким же образом вдругой столбец, так:

SELECT 
    CONVERT(varchar,shipdate,101) AS Shipdate,
    ID, 
    [Last Name], 
    Address,
    SUM([Packaging Quantity]) AS Quantity,
    Size, 
    SUM(Cost) AS Price,
    ROUND(Size/SUM([Packaging Quantity]), 0) AS Total
FROM ...
...