2013-02-07 42 views
0

我对SQL服务器相当陌生(这是我在StackOverflow上的第二篇文章)。我目前正在使用SQL Server 2008 R2。我有,我已经用下面的查询加入了几个表:SQL - 返回数字乘以查询结果的值

SELECT pt.first_name, pt.last_name, pt.provider_id, 
pt.last_visit_date, pl.last_name 
FROM dbo.pm_patient pt 
INNER JOIN dbo.ProviderList pl 
ON pt.provider_id = pl.provider_id 
WHERE pt.last_visit_date >= '02/01/2012' AND pt.last_visit_date <= '02/01/2013' 
ORDER BY provider_id 

上述查询的结果看起来是这样的:

first_name last_name provider_id last_visit_date last_name 
Smith   John   1    04/25/2012  Johnson 
Doe   Jane   1    02/25/2012  Johnson 
Davies  Ann   1    03/15/2012  Johnson 
Dupree  David  1    11/20/2012  Johnson 
Jones   Becky  1    04/21/2012  Smith 
Diaz   Mike   1    02/12/2012  Smith 
Williams  Allison  1    08/05/2012  Smith 
Taylor  Joe   1    10/01/2012  Smith 

我宁愿简单地得到以下结果:

last_name NoOfPatients 
Johnson  4 
Smith  4 

有人能帮我吗?

+0

幸运的是,我们只有大约20个提供者,而且没有一个具有相同的姓氏。 – MLorenzen

回答

2

尝试:

SELECT pl.last_name, count(*) NoOfPatients 
FROM dbo.pm_patient pt 
INNER JOIN dbo.ProviderList pl 
ON pt.provider_id = pl.provider_id 
WHERE pt.last_visit_date >= '02/01/2012' AND pt.last_visit_date <= '02/01/2013' 
GROUP BY pl.last_name 
+0

+1计数(*)函数是OP要查找的内容。 – rajah9

+0

这对我很有用。我意识到count()函数,我想我只是不确定如何正确实现它。非常感谢您的快速/质量响应。 – MLorenzen

0

你需要了解如何使用组querys,基本上你需要做的是算的患者通过供应商的数量和组。

SELECT pt.last_name, COUNT(pt.*) NoOfPatients 
FROM dbo.pm_patient pt 
INNER JOIN dbo.ProviderList pl 
ON pt.provider_id = pl.provider_id 
WHERE pt.last_visit_date >= '02/01/2012' AND pt.last_visit_date <= '02/01/2013' 
ORDER BY provider_id 
GROUP BY pt.last_name