2015-07-08 3 views
0

У меня есть таблица с информацией о пациентах и ​​их диагностике. Каждый пациент имеет уникальный идентификатор, заданный NUM_SEQUENCIAL и может иметь несколько диагнозов. Я извлек информацию из большой таблицы, с помощью следующего запроса:SQL select records with unique ID

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 

Спасибо заранее.

+1

Таким образом, вы не заботитесь, который COD_DIAGNOSTICO получает возвращается? –

+0

Точно, это не имеет значения, я просто хочу, чтобы в моем столе были уникальные пациенты, с любым COD_DIAGNOSTICO. – MrPedru22

+1

Тогда просто не помещайте COD_DIAGNOSTICO в свой выбор - 'выберите DISTINCT (NUM_SEQUENCIAL) из ...' –

ответ

3

Я нахожу MAX и MIN, оба работают для этого. Макс лучше, потому что он никогда не выберет пустые значения.

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. Но я их оставил.

+0

Спасибо TTG Guy;) – MrPedru22

0

Попробуйте

SELECT NUM_SEQUENCIAL, COD_DIAGNOSTICO 
FROM PCE_RP.DIAGNOSTICOS_DOENTE 
GROUP BY NUM_SEQUENCIAL 
HAVING COUNT(NUM_SEQUENCIAL) = 1