首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择表中行的最后一次出现

选择表中行的最后一次出现
EN

Stack Overflow用户
提问于 2015-03-17 20:09:43
回答 2查看 83关注 0票数 1

我想从出院表中选择2015-03-16出院的患者的详细信息,并从入院表中选择他们相应的入院详细信息。

排污表

录取表

这是query.the中使用的两个表,标记为红色的行必须使用查询来选择。

使用的查询:

代码语言:javascript
复制
SELECT a.pat_id, a.pat_name, b.admit_date, b.admit_time, b.diagnosis,
       b.Dr_name, a.dis_date, a.dis_time
from  discharge_details a , admission_Details b
where dis_date = Convert(Date, DATEADD(day, -1, GETDATE()))
  and a.pat_id = b.patient_id
  and b.Admit_status = 'discharged'

获取的输出:

所需输出:

请..。请帮助我提出修改我的查询的建议。

EN

回答 2

Stack Overflow用户

发布于 2015-03-17 20:12:35

您可以使用ROW_NUMBER()来获得您想要的内容。由于您的Admit_Date提供了相信哪一行可能是第一行,哪一行是最后一行的理由,这就是为什么要添加order by

代码语言:javascript
复制
 SELECT
     data.*
 FROM
     (
       SELECT 
           *, ROW_NUMBER() OVER(PARTITION BY pat_id ORDER BY admit_Date desc) as rn
       FROM
           table
     ) as data
 WHERE 
      data.rn = 1
 ORDER BY data.pat_id 

CREATE TABLE #temp
(id int,pat_id varchar(200), admit_Date  date)

INSERT into #temp
values
(1,'pat_123','2015-03-12'),
(2,'pat_245','2015-03-16'),
(3,'pat_123 ','2015-03-16')

上面的查询给出了以下结果:

代码语言:javascript
复制
   id    pat_id      admit_date  rn
    3   pat_123     2015-03-16    1
    2   pat_245     2015-03-16    1
票数 3
EN

Stack Overflow用户

发布于 2015-03-17 20:19:49

在这样的场景中,OUTER APPLY是完美的选择:

代码语言:javascript
复制
SELECT  a.pat_id ,
        a.pat_name ,
        b.admit_date ,
        b.admit_time ,
        b.diagnosis ,
        b.Dr_name ,
        a.dis_date ,
        a.dis_time
FROM    discharge_details a 
        OUTER APPLY (SELECT TOP 1 * FROM admission_Details d WHERE a.pat_id = d.patient_id AND d.Admit_status = 'discharged' ORDER BY admit_date desc )b
WHERE   a.dis_date = CONVERT(DATE, DATEADD(DAY, -1, GETDATE()))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29098719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档