我正在查看医院索赔数据,并且有多个行具有相同的入院日期。我只希望每个病人有一个入院日期。如果有多个行具有相同的录取日期,我想选择具有最大LOS的行,或者当LOS相等时,我想选择具有最早录取日期的行。例如,给出以下数据:
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
我尝试过使用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 :(得分: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
为{{1}}。答案 1 :(得分:0)
在MySQL中,这将是:
Select distinct ID, * from admissions_table order by DC DESC group by ID