我对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
。例如,结果应该类似于
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}}
我尝试按照此处的示例:http://www.sqlservercurry.com/2011/07/sql-server-distinct-count-multiple.html?m=1
使用:
{{1}}
虽然没有成功。总计数小于我在table1上运行非常计数时的总数。
提前谢谢!
答案 0 :(得分: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
答案 1 :(得分: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