2015-08-07 2 views
-3

У меня есть две таблицы, A (ID, имя), B (ID). Я хочу, чтобы запись с группой по имени, а количество А (ID) и B (ID)Как сгруппировать с помощью Count и Join?

Я пытаюсь таким образом

SELECT LEFT(OD.number, 3)  Terminal, 
     Count(LEFT(OD.number, 2)) OrderCount, 
     Count(OT.orderid) 
FROM gff_bog_orderlocation.dbo.orderdetail OD, 
     gff_bog_orderlocation.dbo.ordertable OT 
WHERE OT.orderid IN (SELECT orderid 
         FROM gff_bog_orderlocation.dbo.orderdetail 
         WHERE LEFT(number, 3) IN(SELECT LEFT(number, 3) 
               FROM 
          gff_bog_orderlocation.dbo.orderdetail 
               GROUP BY LEFT(number, 3))) 
GROUP BY LEFT(OD.number, 3) 
ORDER BY terminal 

Но я не получаю правильно.

+0

@psoshmo Он действительно показал, что пытался. Он объяснил, почему он застрял. Тем не менее, вопрос все еще не имеет смысла. Как таблица 'A' ​​даже относится к таблице' B'? Что вы пытаетесь выбраться из этого вопроса ...? – Siyual

+0

@Siyual жаль плохое форматирование сначала заставило мои глаза застеклить и пропустить очевидную попытку. Ill удалить мой комментарий – psoshmo

ответ

1

Основываясь на вашем вопросе, а не на вашем sql, я бы сказал, что вам нужно будет сделать что-то подобное.

CREATE TABLE TableA (ID INT, NAME VARCHAR(50)) 
CREATE TABLE TableB (ID INT) 
INSERT INTO TableA VALUES (1, 'US'), (2, 'US'), (3, 'Canada'), (4, 'Mexico'), (5, 'Mexico') 
INSERT INTO TableB VALUES (1), (1), (1), (2), (2), (3), (3), (3), (4), (4), (4), (5), (5), (5), (5), (5) 

SELECT tA.Name, 
     COUNT(*) TableACount, 
     TableBCount 
FROM TableA tA 
     JOIN (
      SELECT Name, 
        COUNT(*) TableBCount 
      FROM TableA tA 
        LEFT JOIN TableB tB ON tA.ID = tB.ID 
      GROUP BY  
        Name 
     ) tB ON tA.Name = tB.Name 
GROUP BY tA.Name, 
     TableBCount 

DROP TABLE TableA 
DROP TABLE TableB 

RESULT: 

Name TableACount TableBCount 
---- ----------- ----------- 
Canada 1   3 
Mexico 2   8 
US  2   5 
+0

Спасибо. Это то, что я хотел, но не был ясен с моим вопросом. –