如何检索两个条件发生超过 1 次的记录

How to retrieve records where two conditions occur more than 1 time

我不确定我对标题问题的措辞是否正确。我想要做的是查找参数代码 94 和 95 在单个 sample_id 中一起出现的记录。到目前为止我得到的是下面的查询,但它 returns 记录了每个 sample_id.

出现不止一次的 94 或 95
SELECT
    wq.wq_site_sample_result.sample_id,
    wq.wq_site_sample_result.param_name
FROM
    wq.wq_site_sample_result
WHERE
    wq.wq_site_sample_result.pcode IN (
        94,
        95
    )
GROUP BY
    wq.wq_site_sample_result.sample_id,
    wq.wq_site_sample_result.param_name
HAVING COUNT(SAMPLE_ID) >1;

您需要检查 wq.wq_site_sample_result.pcode 列 如下所示 - count(distinct wq.wq_site_sample_result.pcode)

SELECT
    wq.wq_site_sample_result.sample_id,
    wq.wq_site_sample_result.param_name
FROM
    wq.wq_site_sample_result
WHERE
    wq.wq_site_sample_result.pcode IN (
        94,
        95
    )
GROUP BY
    wq.wq_site_sample_result.sample_id,
    wq.wq_site_sample_result.param_name
HAVING COUNT(distinct wq.wq_site_sample_result.pcode) >1;

你们很亲近:

SELECT ssr.sample_id
FROM wq.wq_site_sample_result ssr
WHERE ssr.pcode IN (94, 95)
GROUP BY ssr.sample_id
HAVING count(distinct ssr.pcode) = 2;

注意使用 table 别名来简化查询代码。您的问题提到了示例,因此这是唯一被选择和汇总的内容。 COUNT(DISTINCT) 是为了防止数据重复。如果没有,那么 COUNT(*) 就可以了。

不清楚ssr.param_name在做什么。它 可能 HAVING 子句中是合适的。另一方面,如果可以有多个值,那么 LISTAGG() 会更合适。