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

录取表

这是query.the中使用的两个表,标记为红色的行必须使用查询来选择。
使用的查询:
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'获取的输出:

所需输出:

请..。请帮助我提出修改我的查询的建议。
发布于 2015-03-17 20:12:35
您可以使用ROW_NUMBER()来获得您想要的内容。由于您的Admit_Date提供了相信哪一行可能是第一行,哪一行是最后一行的理由,这就是为什么要添加order by。
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')上面的查询给出了以下结果:
id pat_id admit_date rn
3 pat_123 2015-03-16 1
2 pat_245 2015-03-16 1发布于 2015-03-17 20:19:49
在这样的场景中,OUTER APPLY是完美的选择:
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()))https://stackoverflow.com/questions/29098719
复制相似问题