Вопрос SQL Server (возможно, считать?) - PullRequest
1 голос
/ 23 августа 2011

У меня следующий запрос:

SELECT  A.shipment_id
        ,B.box_id
        ,A.shipment_status
FROM shipments A
join boxes B on A.shipment_id = B.shipment_id
where A.shipment_status = 2
Group by B.box_id, A.shipment_id, A.shipment_status

Возвращает набор результатов, который выглядит следующим образом:

shipment_id , box_id , shipment_status
101, boxA, 2
101, boxB, 2
101, boxC, 2
102, box101, 2
102, box102, 2
103, boxA1, 2
103, boxA2, ​​2

Вместо этого я хотел бы вернуть что-то вроде этого (с указанием общего количества коробок на одну отправку):

shipment_id , количество ящиков , shipment_status
101, 3, 2
102, 2, 2
103, 2, 2

Как бы мне этого добиться?

Спасибо!

Ответы [ 2 ]

8 голосов
/ 23 августа 2011
SELECT  A.shipment_id
        ,COUNT(*) AS boxcount
        ,A.shipment_status
FROM shipments A
join boxes B on A.shipment_id = B.shipment_id
where A.shipment_status = 2
Group by A.shipment_id, A.shipment_status

Просто нужно удалить box_id из GROUP BY и использовать COUNT, как вы сказали в заголовке.

0 голосов
/ 23 августа 2011

Попробуйте это:

SELECT  A.shipment_id
    , count(1)
    , A.shipment_status
  FROM shipments A
  join boxes B on A.shipment_id = B.shipment_id
 where A.shipment_status = 2
 Group by A.shipment_id, A.shipment_status
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...