2014-09-06 4 views
-1

Я ищу данные о госпитале, и есть несколько строк с одинаковой датой поступления. Я хочу только одну дату приема на одного пациента. Если есть несколько строк с одинаковой датой поступления, я хочу выбрать строку с наибольшим LOS, или когда LOS равны, я хочу выбрать тот, у которого самая старая дата приема. Например, учитывая следующие данные:SQL: выбор строки с наименьшим значением

ID  ADMIT  DC  LOS CLMID 
--  -----  --  --- ----- 
1  1-1-07 1-1-07 0 XXX 
1  1-2-07 1-2-07 0 XXX 
2  1-5-07 1-10-07 5 YYY 
3  2-8-07 2-8-07 0 ZZZ 
3  2-8-07 2-12-07 4 ZZZ 
3  2-8-07 2-10-07 2 ZZZ 

Я хотел бы выбрать:

ID  ADMIT  DC  LOS CLMID 
--  -----  --  --- ----- 
1  1-1-07 1-1-07 0  XXX 
2  1-5-07 1-10-07 5  YYY 
3  2-8-07 2-12-07 4  ZZZ 

Я попытался с помощью функции aggregrate MIN, но я довольно потерял о том, как попасть туда, куда я хотеть. Я новичок в SQL и буду признателен за любую помощь!

До сих пор это мой лучший выстрел:

SELECT DISTINCT 
    ID, ADMIT, DC, LOS, CLMID, MIN(ADMIT) 

FROM 
    TABLE1 

GROUP BY 
    ID, ADMIT, DC, LOS, CLMID 

ORDER BY 
    ID 

Я также попытался просто выбрать только максимальное LOS вместо минимума признать, но это не делает его либо.

Спасибо :)

+0

Это 'MySQL' или' SQL Server'? –

+1

Опубликуйте свой лучший снимок при решении вашей проблемы. –

+0

Прошу прощения - это SQL Server. Я так новичок>< – Ashley

ответ

0

В MySQL это будет что-то вроде:

Select distinct ID, * from admissions_table order by DC DESC group by ID 
+0

Вы посмотрели желаемый результат? –

1

это является приоритезация, и вы можете решить эти проблемы с row_number():

select t.* 
from (select t.*, 
      row_number() over (partition by id order by admit asc, los desc) as seqnum 
     from table1 t 
    ) t 
where seqnum = 1; 

Несколько примечаний :

  • Я предполагаю, что даты фактически хранятся как дата/время в базе данных, а не как строки.
  • Условия в вашем первом абзаце немного расплывчаты. Это получает один ряд для каждого пациента с самым высоким los на ранней стадии admit.
Смежные вопросы