我的目标是编写一段代码来查找具有不同测试结果的相同ID.表1包含许多行,但我添加了这4行作为示例.我知道我的代码不正确,但获取此特定信息的正确方式是什么?(参见下面的预期目标) 我希望我的问题有道理,但如果不清楚,请随时发表 comments .

表1:

ID TEST_RESULT DIAGNOSIS
2 POSITIVE X78
2 NEGATIVE U98
3 POSITIVE U98
4 NFEGATIVE Y55

预期目标:

ID TEST_RESULT DIAGNOSIS
2 POSITIVE X78
2 NEGATIVE U98

代码:

SELECT *
FROM table1
WHERE ID <> ' ' AND TEST_RESULT= NEGATIVE AND TEST_RESULT = POSITIVE;

推荐答案

您将需要一个子查询来计算每个ID有多少个POSITIVENEGATIVE个结果,然后使用其结果进行筛选:

SELECT *
FROM Table1
WHERE id IN (
              SELECT ID
              FROM Table1
              GROUP BY ID
              HAVING SUM(CASE WHEN test_result = 'POSITIVE' THEN 1 ELSE 0 END) > 0
                     AND  
                     SUM(CASE WHEN test_result = 'NEGATIVE' THEN 1 ELSE 0 END) > 0   
             ); 

FIDDLE DEMO

Sql相关问答推荐

Microsoft Access UNION将长文本字段限制为255个字符

基于模式或其他行集的数据复制

如何更改函数返回的列名?

Select 最大值,但当并列时,从其他列 Select 最大值

SQL查询:合并2个表

SQL—如何根据2列填写缺失的值

一个SQL查询将在需要的地方多次返回同一成员

如何在PostgreSQL中对第1,1,1,1,2,2,2,2行进行编号

我怎样才能得到列值对应的最大值在另一个?

如何实现同一列的递归计算?

使用特定的Order By子句随机化SQL输出

更改重复值的情况

根据时间值提取记录

我们可以使用连接改进包含多个子查询的查询吗

使用 PL/PGSQL 函数 Select 返回多条记录

Snowflake 中的对象是如何比较的?

PostgreSQL 中的递归树查询

具有关联统计信息 N+1 的 Rails 6 索引资源?

是否有验证 SQL 连接的基数?

Presto SQL - 将 varchar 中的日期转换为日期格式时出现问题