pro sql number;
create table daily_total as
select distinct trans_dt,
sum((select (quantity * unit_price)
from transaction_detail
where subcat_num = 1111 and trans_dt = a.trans_dt))
from transaction_detail as a
where trans_dt between '2015-01-01' and '2015-01-02';
quit;
我知道我可以通过分组来实现同样的目标,但我希望通过子查询来实现这一目标,以获得学习体验。
我基本上想要选择两个不同的日期,并在该特定日期返回子类别的每个单独交易的总和。
谢谢。
答案 0 :(得分:1)
在SQL中,SUM,AVG,MAX,MIN(取决于SQL引擎)等聚合函数不会在子查询本身上运行。
考虑以下调整,其中在子查询中使用SUM。此外,我假设您希望子查询的日期范围对应于外部查询的日期和将来的一天。因此,我使用SAS的INTNX()函数。
pro sql;
create table daily_total as
select distinct a.trans_dt,
(select sum(b.quantity * b.unit_price)
from transaction_detail As b
where b.subcat_num = 1111
and (b.trans_dt between a.trans_dt
and intnx('day', a.trans_dt, 1)) As transaction_sum
from transaction_detail a;
quit;