我在mysql中有这个表 - 没有定义任何键。
Real Name : DB Field : Type |
-----------------------|------------|------------|
Patient ID : pid : varchar50 |
White Blood Cell Count : wbc : int |
Lab Date : ldate : datetime |
-------------------------------------------------|
每位患者进行了10次实验室检查。这些测试在10天内完成。因此,对于一名患者,表中有10行(具有相同的pid),具有10'wbc'值和他们的实验室测试日期。在上表中,我想得到按'pid'分组的最小'wbc'计数的相应日期
通过pid从tbl_temp组中选择pid,min(wbc),ldate
以上查询可以获得最小wbc但不能获得同一行中的相应日期。它只获取相关pid的日期列的第一个值。
请帮我写一个综合查询。
答案 0 :(得分:1)
要获取与最小值关联的数据,请加入子查询。这是一般的想法
select fred, barney, mindate
from MyTable
join (
select wilma, min(datefield) mindate
from MyTable
group by Wilma ) temp on temp.Wilma = MyTable.Wilma
and datefield = mindate
你应该能够弄清楚如何将这个概念融入你自己的情况。
答案 1 :(得分:0)
让我尝试重申......对于每位患者,您需要最低的白细胞计数......从最低的白细胞计数,您想知道它发生的日期。
首先以患者分组的最低计数(分钟)开始。从那里,每个患者重新加入原始表并获取具有该最低值的日期。
select
yt2.pid,
yt2.wbc,
yt2.ldate
from
( select
yt1.pid,
min( yt1.wbc ) LowestWBCValue
from
YourTable yt1
group by
yt1.pid ) PreQuery
Join YourTable yt2
on PreQuery.pid = yt2.pid
AND PreQuery.LowestWBCValue = yt2.wbc