SQL两个表联合查询记录中怎么取最大值?
2个回答
展开全部
你首先要弄明白自己需要的数据应该具备哪些条件:
1. 按照Item_ID分组。
2. 取每组中OnDate中最大的记录,实际上就是取最新的数据。
3. 数据过滤条件是 MZZYH='5'
第一步:select max(OnDate)as date, ITEM_ID from PatientResult where MZZYH='5' group by ITEM_ID
上面的语句得到的记录集为按照ITEM_ID分组,获得每个分组的最新日期。
第二步,分析目前的三个记录集:
a)包含有 ITEM_ID , max(OnDate)的主记录,由第一步的查询结果得到,它的记录条数就是最后结果的记录条数。
b) 需要在结果中输出的 与主记录对应的PatientResult 原始表记录的内容。
c)与ITEM_ID对应的名字信息ItemInfo ,
其中记录集a为主记录,a与b之间的对应关系为a. ITEM_ID = b. ITEM_ID and a.date = b.OnDate
其中a与c的关系为 a.ITEM_ID = c. ITEM_ID
select b.*, c.* from (select max(OnDate)as date, ITEM_ID from PatientResult where MZZYH='5' group by ITEM_ID) as a, PatientResult as b, ItemInfo as c where a.ITEM_ID=b.ITEM_ID and a.date = b.OnDate and a.ITEM_ID=c.ITEM_ID
其实对于复杂的查询,最好采用临时表和存储过程,使查询变得非常简单明了,便于维护
1. 按照Item_ID分组。
2. 取每组中OnDate中最大的记录,实际上就是取最新的数据。
3. 数据过滤条件是 MZZYH='5'
第一步:select max(OnDate)as date, ITEM_ID from PatientResult where MZZYH='5' group by ITEM_ID
上面的语句得到的记录集为按照ITEM_ID分组,获得每个分组的最新日期。
第二步,分析目前的三个记录集:
a)包含有 ITEM_ID , max(OnDate)的主记录,由第一步的查询结果得到,它的记录条数就是最后结果的记录条数。
b) 需要在结果中输出的 与主记录对应的PatientResult 原始表记录的内容。
c)与ITEM_ID对应的名字信息ItemInfo ,
其中记录集a为主记录,a与b之间的对应关系为a. ITEM_ID = b. ITEM_ID and a.date = b.OnDate
其中a与c的关系为 a.ITEM_ID = c. ITEM_ID
select b.*, c.* from (select max(OnDate)as date, ITEM_ID from PatientResult where MZZYH='5' group by ITEM_ID) as a, PatientResult as b, ItemInfo as c where a.ITEM_ID=b.ITEM_ID and a.date = b.OnDate and a.ITEM_ID=c.ITEM_ID
其实对于复杂的查询,最好采用临时表和存储过程,使查询变得非常简单明了,便于维护
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询