我正在尝试查找患者服用带有特定标志的药物的最短日期。这是我正在使用的代码:
create table Schema.Want as select
*, min(case when Flag="True" then Date end) as First_Date
from Schema.Have group by Patient_ID;
我也尝试列出所有变量,但这也没有帮助。当我运行该代码时,我收到与“only_full_group”关联的错误代码 1055。我看到其他人建议我关闭此功能(我还没有尝试过),但我担心为什么会首先抛出此错误。当我收到此错误代码时,是否意味着我的表中有重复的行?
我有 Patient_ID(NUM)、Drug_ID(NUM)、Quantity(NUM)、Fill_Date(日期/字符)、Flag(CHAR)、Comp_Set(CHAR) 和 Drug_strength(CHAR)。因此,如果一名患者在同一天配了两份相同强度和数量的相同药物的处方,那么他们的两行将是相同的。但这对我来说似乎不太可能。
我需要做的就是创建一个单独的列,其中包含患者服用某种药物的最早日期。我的代码在 SAS 中使用 proc sql 可以工作,但在使用 MySQL 时则不行。感谢您提前的帮助!!
最佳答案
您需要将 MIN() 值重新合并回详细记录中。如果您检查 SAS 中的日志,您将看到它正在为您执行重新合并。
create table Schema.Want as
select a.*,b.First_Date
from Schema.Have a
inner join
(select Patient_ID, min(case when Flag="True" then Date end) as First_Date
from Schema.Have group by Patient_ID) b
on a.Patient_ID=b.Patient_ID
;
关于mysql - SQL 错误代码 1055。按组标记的最小日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50260295/