Как рассчитать общее количество строк в отправлении - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь подсчитать общее количество строк для каждой отправки:

SELECT  Shipments.ShipmentId, 
        SalesOrders.SalesOrderId as OrderNumber,  
        Count(SalesOrderItems.SalesOrderItem) as NumberOfLines

FROM SalesOrders 

INNER JOIN SalesOrderItems on SalesOrders.SalesOrder = SalesOrderItems.SalesOrder 
INNER JOIN Shipments on SalesOrderItems.SalesOrder = Shipments.SalesOrder

GROUP BY SalesOrderItems.SalesOrderItem, SalesOrders.SalesOrderId, Shipments.ShipmentId

ORDER BY Shipments.ShipmentID ASC

В настоящее время я получаю:

ShipmentID  | OrderNumber    | NumberOfLines
SH00000001  | SO-0000001     | 1
SH00000001  | SO-0000001     | 1
SH00000002  | SO-0000007     | 1
SH00000003  | SO-0000006     | 1
SH00000003  | SO-0000006     | 1

И я должен получить:

ShipmentID  | OrderNumber    | NumberOfLines
SH00000001  | SO-0000001     | 1
SH00000001  | SO-0000001     | 2
SH00000002  | SO-0000007     | 1
SH00000003  | SO-0000006     | 1
SH00000003  | SO-0000006     | 2

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Ваше предложение GROUP BY должно соответствовать неагрегированным столбцам в SELECT:

SELECT s.ShipmentId, 
       so.SalesOrderId as OrderNumber,  
       Count(soi.SalesOrderItem) as NumberOfLines
FROM SalesOrders so INNER JOIN
     SalesOrderItems soi
     ON so.SalesOrder = soi.SalesOrder INNER JOIN
     Shipments s
     ON soi.SalesOrder = s.SalesOrder
GROUP BY soi.SalesOrderId, s.ShipmentId
ORDER BY s.ShipmentID ASC;

Обратите внимание, что я добавил псевдонимы таблиц.Это облегчает написание и чтение запросов.

0 голосов
/ 12 октября 2018

Удалите SalesOrderItems.SalesOrderItem из вашего предложения group by, вы не хотите его (как можно заключить из того, чего он не существует в вашем наборе результирующих данных).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...