Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择id(在本例中为dupersid),其中第二列(在本例中为icd9codx)中的值仅为(296311)和250_Mysql_Sql_Postgresql_Amazon Redshift - Fatal编程技术网

Mysql 选择id(在本例中为dupersid),其中第二列(在本例中为icd9codx)中的值仅为(296311)和250

Mysql 选择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

选择id(在本例中为DuperID),其中第二列(在本例中为icd9codx)中的值仅为(296311)和250


预期结果

----------------------
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)