sql - 在具有约束的类中选择不同的成员

标签 sql sql-server

我有一个名为“Patients”的表,看起来像这样

> PatientName      DateOftest    Eye     L1    L2    L3    L4     L5
>     Mike         17-02-2009     L      23    25    40    32     30
>     Mike         17-02-2009     R      25    30    34    35     24
>     Ryan         18-03-2012     R      12    18    27    39     40
>     Bill         08-03-2006     L      20    24    30    24     25
>     Bill         08-03-2006     R      18    25    27    30     24   
>     Chan         03-08-2009     L      18    21    28    35     12

不,我必须从只有一个(左眼记录或右眼记录测试)的患者中选择 *。结果将是

Ryan         18-03-2012     R      12    18    27    39     40
Chan         03-08-2009     L      18    21    28    35     12

最佳答案

你可以这样做:

SELECT *
FROM Patients
WHERE PatientName IN(SELECT PatientName 
                     FROM Patients
                     GROUP BY PatientName 
                     HAVING COUNT(*) = 1);

SQL Fiddle Demo

这会给你:

| PATIENTNAME | DATEOFTEST | EYE | L1 | L2 | L3 | L4 | L5 |
-----------------------------------------------------------
|        Ryan | 18-03-2012 |   R | 12 | 18 | 27 | 39 | 40 |
|        Chan | 03-08-2009 |   L | 18 | 21 | 28 | 35 | 12 |

关于sql - 在具有约束的类中选择不同的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14931496/

相关文章:

sql - 在 Postgres 中以周为单位拆分间隔

sql - 在 R 函数中调用 SQL 函数

sql-server - 连接到 SSIS 包中的数据库时出错

sql-server - SQL Server 版本升级和缓存执行计划

c# - DataTable 到 CSV 日期格式

mysql - 我可以在 MySQL 中组合两个更新查询以使其更快吗?

mysql - SQL 不喜欢返回所有行而不是差异

sql-server - 数据库批准拒绝工作流程

sql - 如何正确按字符串格式的日期排序?

c# - sql server 数据库中的审计记录更改