SQL - 返回数字乘以查询得到的值

时间:2013-02-07 17:17:57

标签: sql sql-server-2008-r2

我是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

有人可以帮助我吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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