2013-12-09 4 views
0

Я пытаюсь использовать этот SQL-запрос, но показывая ошибку метода суммирования, пожалуйста, решите эту проблему. Я использую этот запрос в хранимой процедуре. спасибо advaceGroup By Clause показать агрегированную ошибку метода

BEGIN 
    SELECT CustomerName + ' - ' + StoreName                  AS 'CustomerName', 
      CreateDate                       AS 'OrderDate', 
      DeliveryDate, 
      RegDelDate, 
      CONVERT(VARCHAR(10), WeekStart, 101) + ' - ' + CONVERT(VARCHAR(10), DATEADD(DAY, 6, WeekStart), 101) AS 'WeekName', 
      TotalCost, 
      TotalCount, 
      CONVERT(VARCHAR(10), O.OrderId)                  AS 'OrderId', 
      Comment, 
      CASE 
      WHEN TicketNo IS NULL 
        OR TicketNo = '' THEN 'DDM' 
      ELSE TicketNo 
      END                         AS 'TicketNo', 
      [Status] 
    FROM [Order] O 
      INNER JOIN Store S 
      ON S.StoreID = O.StoreId 
      INNER JOIN Customer C2 
      ON C2.CustomerID = O.CustId 
      INNER JOIN (SELECT SUM(OrderQty)   AS TotalCount, 
           SUM(OrderQty * CaseCost) AS TotalCost, 
           OrderId 
         FROM OrderItem OI 
         GROUP BY OrderId) OI 
      ON OI.OrderId = O.OrderId 
      INNER JOIN AllWeeks 
      ON WeekNo = [Week] 
       AND YearNo = [Year], 
      OrderItem OI1 
    GROUP BY O.CreateDate 
END 
+4

Вы должны добавить в группу по любому столбцу из выбора, который не использует агрегатную функцию. – buzdykg

+0

спасибо за редактирование Я использую переполнение стека в первый раз – user3083119

+0

Я добавляю «CreateDate», это существует в select – user3083119

ответ

0

Если вы используете агрегацию, то столбец либо должен быть в группе или совокупность

Группа по не имеет смысла, так как вы будете иметь несколько клиентов и клиентов на самом деле не объединяется.

Я предполагаю, что Вы хотите что-то вроде этого

SELECT O.CustomerName, O.CreateDate, sum(TotalCost) as 'SumCost', sum(TotalCount) as 'SumCount'        
    FROM [Order] O 
      INNER JOIN Store S 
      ON S.StoreID = O.StoreId 
      INNER JOIN Customer C2 
      ON C2.CustomerID = O.CustId 
      INNER JOIN (SELECT SUM(OrderQty)   AS TotalCount, 
           SUM(OrderQty * CaseCost) AS TotalCost, 
           OrderId 
         FROM OrderItem OI 
         GROUP BY OrderId) OI 
      ON OI.OrderId = O.OrderId 
      INNER JOIN AllWeeks 
      ON WeekNo = [Week] 
       AND YearNo = [Year], 
      OrderItem OI1 
    GROUP BY O.CustomerName, O.CreateDate 
Смежные вопросы