两张桌子的计数差别很大。 SQL

时间:2014-12-31 14:19:23

标签: sql-server count distinct

我对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上运行非常计数时的总数。

提前谢谢!

2 个答案:

答案 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