SQL选择具有唯一ID的记录

时间:2015-07-08 18:37:20

标签: sql database

我有一张表格,上面有关于患者及其诊断的信息。每位患者都有一个唯一的标识符,由NUM_SEQUENCIAL给出,可以进行多次诊断。我已从较大的表中提取信息,并使用以下查询:

select DISTINCT 
    (NUM_SEQUENCIAL), COD_DIAGNOSTICO 
FROM 
    PCE_RP.DIAGNOSTICOS_DOENTE 
WHERE 
    COD_DIAGNOSTICO = '153' OR 
    COD_DIAGNOSTICO = '1530' OR 
    COD_DIAGNOSTICO = '1531' OR
    COD_DIAGNOSTICO = '1532' OR 
    COD_DIAGNOSTICO = '1533' OR 
    COD_DIAGNOSTICO = '1534' OR 
    COD_DIAGNOSTICO = '1536' OR 
    COD_DIAGNOSTICO = '1537' OR 
    COD_DIAGNOSTICO = '1538' OR 
    COD_DIAGNOSTICO = '1539' OR 
    COD_DIAGNOSTICO = '1540' OR 
    COD_DIAGNOSTICO = '1541'; 

结果如下表:

NUM_SEQUENCIAL | COD_DIAGNOSTICO
2              | 1541
3              | 153
3              | 1533
4              | 1536
4              | 153

问题:如何选择具有给定COD_DIAGNOSTICO的唯一患者记录?它可以是任何COD_DIAGNOSTICO,我只想获得如下的表格,例如:

NUM_SEQUENCIAL | COD_DIAGNOSTICO
2              | 1541
3              | 153
4              | 1536

提前致谢。

2 个答案:

答案 0 :(得分:3)

我发现MAX和MIN都适用于此。 Max更好,因为它永远不会选择空值。

SELECT  
    (NUM_SEQUENCIAL), MAX(COD_DIAGNOSTICO ) COD_DIAGNOSTICO
FROM 
    PCE_RP.DIAGNOSTICOS_DOENTE 
WHERE 
    COD_DIAGNOSTICO = '153' OR 
    COD_DIAGNOSTICO = '1530' OR 
    COD_DIAGNOSTICO = '1531' OR
    COD_DIAGNOSTICO = '1532' OR 
    COD_DIAGNOSTICO = '1533' OR 
    COD_DIAGNOSTICO = '1534' OR 
    COD_DIAGNOSTICO = '1536' OR 
    COD_DIAGNOSTICO = '1537' OR 
    COD_DIAGNOSTICO = '1538' OR 
    COD_DIAGNOSTICO = '1539' OR 
    COD_DIAGNOSTICO = '1540' OR 
    COD_DIAGNOSTICO = '1541'; 

GROUP BY NUM_SEQUENCIAL

您应该使用IN()而不是所有这些OR。但我暂时离开了他们。

答案 1 :(得分:0)

尝试

Guava's