按SQL语句分组

jel*_*llo 4 sql t-sql sql-server group-by

所以我得到了这个声明,这很好:

SELECT   MAX(patient_history_date_bio) AS med_date, medication_name
FROM     biological
WHERE    patient_id = 12)
GROUP BY medication_name
Run Code Online (Sandbox Code Playgroud)

但是,我想也有相应的药物_dose.所以我输入了这个

SELECT   MAX(patient_history_date_bio) AS med_date, medication_name, medication_dose
FROM     biological
WHERE    (patient_id = 12)
GROUP BY medication_name
Run Code Online (Sandbox Code Playgroud)

但是,它给我一个错误说:

"coumn'biimal.medication_dose'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中."

所以我尝试将GMB_dose添加到GROUP BY子句中,但是它给了我额外的行,我不想要.我想在我的桌子上获得每种药物的最新行.(最新行由max函数确定,获取最新日期).

我该如何解决这个问题?

OMG*_*ies 5

使用:

SELECT b.medication_name,
       b.patient_history_date_bio AS med_date,
       b.medication_dose
  FROM BIOLOGICAL b
  JOIN (SELECT y.medication_name,
               MAX(y.patient_history_date_bio) AS max_date
          FROM BIOLOGICAL y
      GROUP BY y.medication_name) x ON x.medication_name = b.medication_name
                                   AND x.max_date = b.patient_history_date_bio
 WHERE b.patient_id = ?
Run Code Online (Sandbox Code Playgroud)