Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 正在尝试使用count语句为多个个体计算多个值_Sql_Select_Count - Fatal编程技术网

Sql 正在尝试使用count语句为多个个体计算多个值

Sql 正在尝试使用count语句为多个个体计算多个值,sql,select,count,Sql,Select,Count,我在一家社区健康中心工作。我想计算一下我们的牙科服务提供商使用多个服务代码的次数。正在尝试创建一个脚本,该脚本将返回类似于以下内容的内容: provider|code|code|code etc... --------------------------- name | # | # | # --------------------------- name | # | # | # --------------------------- name | # | # | #

我在一家社区健康中心工作。我想计算一下我们的牙科服务提供商使用多个服务代码的次数。正在尝试创建一个脚本,该脚本将返回类似于以下内容的内容:

provider|code|code|code etc...
---------------------------
name    | #  | #  | #
---------------------------
name    | #  | #  | #
---------------------------
name    | #  | #  | #
---------------------------
etc...  
我已经有了一个脚本,它返回了我想要的内容,但不是我需要的格式

select pm.description [Provider], p.service_item_id [Code], p.service_item_description [Service], COUNT(pm.description) As Count
from patient_procedure p 
     inner join location_master l on p.location_id = l.location_id 
     inner join provider_master pm on p.provider_id = pm.provider_id
     inner join patient_encounter p2 on p.enc_id = p2.enc_id
where l.location_name like '%dental%'
      and p2.enc_timestamp between '20190101 00:00:00.000' and '20190630 23:59:59.999'
      and p2.billable_ind = y
group by p.service_item_id, p.service_item_description, pm.description
order by p.service_item_description ASCENDING
它返回:

Provider| Code| Service| Count

如果要为每个代码获取不同的计数,可以使用条件
COUNT
语句:

SUM(CASE WHEN service_item_id = 1 THEN 1 ELSE 0 END) AS count_id_1
在您的情况下,它看起来是这样的:

SELECT 
  pm.description [Provider], 
  p.service_item_id [Code], 
  p.service_item_description [Service], 
  SUM(CASE WHEN p.service_item_id = 1 THEN 1 ELSE 0 END) As Count_id_1,
  SUM(CASE WHEN p.service_item_id = 2 THEN 1 ELSE 0 END) As Count_id_2,
  SUM(CASE WHEN p.service_item_id = 3 THEN 1 ELSE 0 END) As Count_id_3
FROM patient_procedure p 
     INNER JOIN location_master l ON p.location_id = l.location_id 
     INNER JOIN provider_master pm ON p.provider_id = pm.provider_id
     INNER JOIN patient_encounter p2 ON p.enc_id = p2.enc_id
WHERE l.location_name LIKE '%dental%'
     AND p2.enc_timestamp BETWEEN '20190101 00:00:00.000' AND '20190630 23:59:59.999'
     AND p2.billable_ind = y
GROUP BY p.service_item_id, p.service_item_description, pm.description
ORDER BY p.service_item_description ASCENDING

这将为您提供要跟踪的不同代码的计数。

什么数据库?SQL Server?请编辑您的问题并添加
sql server
或任何数据库。另外,看起来你想转一转。谢谢你!但使用它似乎变得单调乏味,因为我将继续为我们有100多条代码的每一条代码添加一个案例。任何方法都可以使它与我们拥有的服务项目一样多。类似于一个独特的语句?嗯……我不确定,也许可以看看做一个
PIVOT
,就像Mark在上面的评论中建议的那样。