Mysql 选择id(在本例中为dupersid),其中第二列(在本例中为icd9codx)中的值仅为(296311)和250
选择id(在本例中为DuperID),其中第二列(在本例中为icd9codx)中的值仅为(296311)和250Mysql 选择id(在本例中为dupersid),其中第二列(在本例中为icd9codx)中的值仅为(296311)和250,mysql,sql,postgresql,amazon-redshift,Mysql,Sql,Postgresql,Amazon Redshift,选择id(在本例中为DuperID),其中第二列(在本例中为icd9codx)中的值仅为(296311)和250 预期结果 ---------------------- dupersid icd9codx --------------------- 46166102 250 46166102 311 46166103 250 46166103 296 我试过了 SELECT dupersid, icd9codx FROM public.sample_test W
预期结果
----------------------
dupersid icd9codx
---------------------
46166102 250
46166102 311
46166103 250
46166103 296
我试过了
SELECT dupersid, icd9codx FROM public.sample_test
WHERE icd9codx = 250 AND dupersid IN (select distinct dupersid from public.sample_test where icd9codx IN (296, 311));
但它也提供了类似46166101的记录,你可以通过2的幂和来实现这一点:
SELECT *
FROM public.sample_test
WHERE dupersid IN(SELECT dupersid FROM public.sample_test
GROUP BY dupersid
HAVING SUM(CASE icd9codx WHEN 250 THEN 1
WHEN 296 THEN 2
WHEN 311 THEN 4
ELSE 8 END) IN (3, 5) AND
SUM(CASE WHEN icd9codx = 250 THEN 1
ELSE 0 END) = 1)
46166101在那里,因为它有icd9codx所在的记录(296311)…谢谢Giorgi。我很抱歉,但我刚刚意识到我想要的是带有icd9codx=(296或311)和250的dupersid,而不是别的。我将编辑问题以反映这一点。对不起,混淆了。可以同时有3个吗?即296311和250?或者250 296 296?不,结果集应该是(296和250)或(311和250)的二倍体。简单地说,这意味着患有糖尿病和抑郁症的患者,但没有其他疾病。代码:296或311表示抑郁症和250糖尿病我增加了一个检查,因为可以有3行,只有250,没有额外的检查,你会得到那一行。
SELECT *
FROM public.sample_test
WHERE dupersid IN(SELECT dupersid FROM public.sample_test
GROUP BY dupersid
HAVING SUM(CASE icd9codx WHEN 250 THEN 1
WHEN 296 THEN 2
WHEN 311 THEN 4
ELSE 8 END) IN (3, 5) AND
SUM(CASE WHEN icd9codx = 250 THEN 1
ELSE 0 END) = 1)