2014-12-31 3 views
1

Я очень новичок в SQL, прошу прощения, если что-то не имеет смысла!Отличный счет за две таблицы. SQL

У меня есть two tables, каждый из которых имеет столбец 'client_nbr'. Некоторые из client_nbrs будут overlap в двух таблицах. Мне нужно указать count количество людей с определенным значением в столбце 'age', которое находится в обеих таблицах. Например, результаты должны иметь что-то вроде

age - 5 count - 3,000 

И что будет рассчитывать только номер клиента один раз, даже если он находится в обеих таблицах.

Когда я делаю это за один стол я бегу:

Select age, count(distinct(client_nbr)) 
From table1 
Group by age 

Я пытался следовать примеру здесь: http://www.sqlservercurry.com/2011/07/sql-server-distinct-count-multiple.html?m=1

Использование:

Select table1.age,table2.age, 
Count(distinct(table1.client_nbr)) as total 
From table1,table2 
Where table1.client_nbr=table2.client_nbr 
Group by table1.age,table2.age 

Это не сработало, хотя , Общий счет был меньше, чем когда я запускал отчетный счет только по таблице1.

Спасибо заранее!

+1

Это будет хорошо, если изменить ваши вопросы с ** Образец данных ** обеих таблиц и ** ожидается выход ** –

ответ

3

Попробуйте вместо этого:

SELECT age, COUNT(DISTINCT client_nbr) AS Total 
FROM 
(
    SELECT age, client_nbr FROM table1 
    UNION ALL 
    SELECT age, client_nbr FROM table2 
) AS t 
GROUP BY age 
+0

Это работало красиво! Огромное спасибо!! – Sarah

+0

@Sarah - Добро пожаловать в любое время, если вы сочтете это полезным, попробуйте принять ответ, щелкнув пометку слева от ответа. –

0

Вы используете неявный внутреннее соединение в запросе означает, что значения, содержащиеся в обеих таблицах возвращаются только. Используйте внешнее соединение, чтобы получить все значения в обеих таблицах

Select table1.age,table2.age, 
Count(distinct(table1.client_nbr)) as total 
From table1 FULL OUTER JOIN table2 ON table1.age = table2.age 
Group by table1.age,table2.age 
Смежные вопросы