SQL 在不同条件下连接同一个表并获取计数

标签 sql sql-server join inner-join

我有一张包含保险 claim 的表格。它具有 ID、患者的病情、ClaimID、EmergencyDepartmentFlag(1 - ED; 0 - NonED。我需要获取结果,该结果给出每种情况的 claim 计数和每种情况的 ED 就诊计数

+----------+-----------+----------+--------+
| MemberID | Condition | ClaimID  | EDFlag |
+----------+-----------+----------+--------+
| A123     | COPD      | 34124434 |      1 |
| A526     | COPD      | 34580304 |      0 |
| A693     | COPD      | 23723642 |      1 |
| A645     | DM        | 46534633 |      1 |
+----------+-----------+----------+--------+

预期输出

+-----------+-------------+----------+
| Condition | TotalClaims | EDClaims |
+-----------+-------------+----------+
| COPD      |           3 |        2 |
| DM        |           1 |        1 |
+-----------+-------------+----------+

查询

SELECT condition, 
       Count(a1.claimid) AS TotalClaims, 
       Count(a2.claimid) AS EDClaims 
FROM   (SELECT memberid, 
               condition, 
               claimid 
        FROM   mytable) a1 
       INNER JOIN (SELECT memberid, 
                          condition, 
                          claimid 
                   FROM   mytable 
                   WHERE  edflag = 1) a2 
               ON a1.memberid = A2.memberid 
GROUP  BY condition 

此查询未返回正确的结果。

最佳答案

就用这个

SELECT
    Condition,
    TotalClaims = COUNT(1),
    EDClaims = SUM(CAST(EDFlag AS INT))
    FROM YourTable
    GROUP BY Condition

演示:

DECLARE @T TABLE
(
    Condition VARCHAR(50),
    ClaimID BIGINT,
    EDFlag BIT
)

INSERT INTO @T
VALUES('COPD',34124434,1),
('COPD',34580304,0),
('COPD',23723642,1),
('DM',46534633,1)

SELECT
    Condition,
    TotalClaims = COUNT(1),
    EDClaims = SUM(CAST(EDFlag AS INT))
    FROM @T
    GROUP BY Condition

结果

enter image description here

关于SQL 在不同条件下连接同一个表并获取计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48010373/

相关文章:

php - MySQL 仅在未找到匹配项时返回

php - 将MySQL的日期时间更改为PHP中可读的文本

sql - 如何更改数据库中每个表的索引

php - 检查2个表中是否存在数据

python - pyodbc 解包 SQL_GUID 以转换为小写字符串

sql - 过滤一组记录

mysql - 自然连接表

mysql - SQL 将值拆分为多行

php - 使用 php 正确编写的 PostgreSQL 准备/执行语句?

sql-server - 触发器内游标中的 SQL Server 错误处理