Выбор счетчика из второй таблицы на основе начального выбора - PullRequest
0 голосов
/ 23 марта 2011

Таблица 1: AccountId, ReferenceId, Name, (много других столбцов)

Таблица 2: AccountId, ReferenceId, (другие столбцы)

Как сделать выбор, чтобы получитьследующее:

AccountId, ReferenceId, [Count(*) in Table2 where accountId and reference ID match.]
1, AB, 1
1, AC, 0
2, AD, 4
2, EF, 0

и т. д.

Угадай соединение, но это дает мне значения, а не счет?Пытался добавить счетчик, но получить ошибки?

Ответы [ 4 ]

2 голосов
/ 23 марта 2011
 SELECT T1.AccountId,
       T1.ReferenceId,
       COUNT(T2.ReferenceId) AS Cnt
FROM   Table1 T1
       LEFT JOIN Table2 T2
         ON T1.AccountId = T2.AccountId
            AND T1.ReferenceId = T2.ReferenceId
GROUP  BY T1.AccountId,
          T1.ReferenceId  
1 голос
/ 23 марта 2011

Что-то вроде:

SELECT t1.AccountId, t1.ReferenceId, COUNT(t2.AccountId)
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.AccountId = t2.AccountId AND
                       t1.ReferenceId = t2.ReferenceId
GROUP BY t1.AccountId, t1.ReferenceId

должно работать. Хитрость заключается в том, чтобы сгруппировать по обоим ключевым значениям, чтобы вы могли агрегировать по другим значениям. В этом случае вы хотите просто посчитать значения из других строк (вы также можете суммировать или усреднять значения из сгруппированных строк.).

0 голосов
/ 23 марта 2011

пример данных

declare @tbl1 table (AccountId INT, ReferenceId int, Name varchar(20))
declare @tbl2 table (AccountId INT, ReferenceId int)

insert into @tbl1 select 1, 10, 'White'
insert into @tbl1 select 2, 20, 'Green'
insert into @tbl1 select 3, 30, 'Black'
insert into @tbl1 select 3, 40, 'Red'

insert into @tbl2 select 1, 10
insert into @tbl2 select 1, 10
insert into @tbl2 select 2, 20
insert into @tbl2 select 3, 30

Запрос

select t.AccountId, t.ReferenceId, t.Name
    ,(select COUNT(*) from @tbl2 t2 
            where t.AccountId = t2.AccountId 
            and t.ReferenceId = t.ReferenceId) as countt

    from @tbl1 t 
0 голосов
/ 23 марта 2011
SELECT t1.AccountId, t1.ReferenceId, COUNT(t2.AccountId)
FROM Table1 t1 LEFT JOIN Table2 t2 
ON (t1.AccountId=t2.AccountId AND t1.ReferenceId=t2.ReferenceId)
GROUP BY Table1.AccountId, Table1.ReferenceId 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...