【发布时间】:2020-03-19 20:01:41
【问题描述】:
我收到消息“错误:子查询评估为不止一行。我在下面发布了工作代码。我想知道如何解决这个错误。提前谢谢你。
data have;
input Subject Type :$12. Date &:anydtdte. Procedure :$12. Measurement;
format date yymmdd10.;
datalines;
500 Initial 15 AUG 2017 Invasive 20
500 Initial 18 SEPT 2018 Surface 35
500 Followup 12 SEPT 2018 Invasive 54
428 Followup 2 JUL 2019 Outer 29
765 Seventh 3 JUL 2018 Other 13
500 Followup 6 NOV 2018 Surface 98
428 Initial 23 FEB 2018 Outer 10
765 Initial 20 AUG 2019 Other 19
610 Third 21 AUG 2018 Invasive 66
610 Initial 27 Mar 2018 Invasive 17
999 Dummy 17 mar 2020 Some 1
999 Dummy 18 mar 2020 Some 2
999 Dummy 19 mar 2020 Some 3
;
proc sql;
create table want as
select *,
(select max(measurement)
from have
where subject=a.subject and type=a.type and procedure=a.procedure
having date = max(date)) / min(measurement) as ratio
from have as a
group by subject, type, procedure
order by subject, date;
quit;
【问题讨论】:
-
您要参考哪个版本的 DATE 和 MEASUREMENT?
-
每个主题应该有一个比率值,还是每个主题/类型/程序一个值?假设我是brickskull,你能说明在口粮计算中应该使用哪些具体值吗?数据总是可以排序的,例子数据乱序是不是有原因。
-
您期望输入的答案是什么?
-
这无疑是单个 SQL 查询中令人印象深刻的问题列表。我已经发现了 5 个问题,甚至不知道您想要实现什么。
-
我在运行您的代码时没有收到该错误。我只是收到注释“注意:查询需要将汇总统计信息与原始数据重新合并。” (Windows 上的 SAS 9.4)正如其他 cmets 所问的那样:您想在概念上实现什么?从您的代码看来您想计算 latest
measurement与组观察到的最小measurement之间的比率,并将该信息作为新列添加到您的 original 数据集...(?)
标签: select sas subquery syntax-error proc-sql