0

我对 SQL 服务器相当陌生(这是我在 StackOverflow 上的第二篇文章)。我目前正在使用 SQL Server 2008 R2。我有几个表已加入以下查询:

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

有人可以帮我吗?

4

2 回答 2

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
于 2013-02-07T17:19:24.413 回答
0

您需要阅读有关如何在查询中使用组的信息,基本上您需要做的是计算患者数量并按提供者分组。

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
于 2013-02-07T17:21:52.350 回答