Столбец недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY - PullRequest
0 голосов
/ 19 сентября 2011

Я пытаюсь получить этот SQL-запрос, чтобы получить еще одну вещь из другой таблицы.Однако, когда я пытаюсь добавить его в выборку, он выдает мне ошибку - «Столбец OrderItem.orderItemValue» недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY. "

Вот оригинальный SQL-запрос (в хранимой процедуре), который отлично работает:

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO


ALTER PROCEDURE SP_InvoiceReports_CustProducts
@custIdent varchar(50) ,
@startDate datetime ,
@endDate datetime
AS
set @endDate = dateAdd(month, 1, @startDate)
SELECT product.styleDesc, product.styleRef , empCust.custName , productSize.sizeChartNme ,
    Sum(orderItemAudit.shipQuantity) as theShipment ,
    Sum(orderItemAudit.shipValue) as theCost
FROM orderItemAudit INNER JOIN
    orders ON 
    orderItemAudit.orderIdent = orders.orderIdent INNER JOIN
    OrderItem ON 
    orderItemAudit.orderItemIdent = OrderItem.orderItemIdent AND 
    orders.orderIdent = OrderItem.orderIdent INNER JOIN
    empCust ON 
    orders.custIdent = empCust.custIdent INNER JOIN
    product ON OrderItem.styleRef = product.styleRef  INNER JOIN
    productSize ON OrderItem.sizeChartIdent = productSize.sizeChartIdent 
WHERE empCust.custIdent = @custIdent
    and orderItemAudit.dateShipped >= @startDate
    and orderItemAudit.dateShipped <= @endDate
GROUP BY product.styleRef, product.styleDesc, empCust.custName, productSize.sizeChartNme
ORDER BY product.styleRef, product.styleDesc, empCust.custName, productSize.sizeChartNme

Вот после того, как я добавил к нему то, что хочу выбрать:

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO


ALTER PROCEDURE SP_InvoiceReports_CustProducts
@custIdent varchar(50) ,
@startDate datetime ,
@endDate datetime
AS
set @endDate = dateAdd(month, 1, @startDate)
SELECT product.styleDesc, product.styleRef , empCust.custName , productSize.sizeChartNme , OrderItem.orderItemValue , 
    Sum(orderItemAudit.shipQuantity) as theShipment ,
    Sum(orderItemAudit.shipValue) as theCost
FROM orderItemAudit INNER JOIN
    orders ON 
    orderItemAudit.orderIdent = orders.orderIdent INNER JOIN
    OrderItem ON 
    orderItemAudit.orderItemIdent = OrderItem.orderItemIdent AND 
    orders.orderIdent = OrderItem.orderIdent INNER JOIN
    empCust ON 
    orders.custIdent = empCust.custIdent INNER JOIN
    product ON OrderItem.styleRef = product.styleRef  INNER JOIN
    productSize ON OrderItem.sizeChartIdent = productSize.sizeChartIdent 
WHERE empCust.custIdent = @custIdent
    and orderItemAudit.dateShipped >= @startDate
    and orderItemAudit.dateShipped <= @endDate
GROUP BY product.styleRef, product.styleDesc, empCust.custName, productSize.sizeChartNme
ORDER BY product.styleRef, product.styleDesc, empCust.custName, productSize.sizeChartNme

Я не понимаю этого, потому что эта таблица находится во ВНУТРЕННЕМ СОЕДИНЕНИИ?

Любая помощь будет принята с благодарностью.

Ответы [ 3 ]

4 голосов
/ 19 сентября 2011

Когда вы делаете GROUP BY, вы говорите: «Для всех строк, имеющих одинаковые значения для этих полей, покажите мне некоторую агрегацию других полей».

Если в GROUP есть поле NOT , его необходимо агрегировать или исключать.

Обычно каждая строка вашего результирующего набора может представлять десятки или сотни строк необработанных данных, и SQL не знает, какой из них выбрать, если вы не используете агрегирование.

Как говорится, если вы добавите его в свой список GROUP BY, это должно решить проблему. В качестве альтернативы, если значения должны быть одинаковыми для этого поля для всех строк в определенной группе, вы можете объединить поле с чем-то простым, например MAX().

2 голосов
/ 19 сентября 2011

Вы не добавили столбец в группу по выражению:

GROUP BY product.styleRef, product.styleDesc, empCust.custName, productSize.sizeChartNme, OrderItem.orderItemValue
0 голосов
/ 19 сентября 2011

Добавьте OrderItem.orderItemValue к вашему GROUP BY предложению:

GROUP BY product.styleRef, 
         product.styleDesc, 
         empCust.custName, 
         productSize.sizeChartNme,
         OrderItem.orderItemValue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...