Sql 如何从第一行减去第二行,从第三行减去第四行,依此类推

Sql 如何从第一行减去第二行,从第三行减去第四行,依此类推,sql,sas,calculated-columns,proc-sql,Sql,Sas,Calculated Columns,Proc Sql,我的SAS数据集如所附图片所示。。我试图完成的是从总计列中创建一个新的计算字段,在该列中,我减去第一行第二行、第三行第四行,依此类推 到目前为止,我所尝试的是 DATA WANT2; SET WANT; BY APPT_TYPE; IF FIRST.APPT_TYPE THEN SUPPLY-OPEN; ELSE 'ERROR'; RUN; 此抛出的eror as语句无效 我不知道该怎么办 给你。你提供的信息有限,我只能尽我所能。下次请提供样本数据和预期输出 data have; input

我的SAS数据集如所附图片所示。。我试图完成的是从总计列中创建一个新的计算字段,在该列中,我减去第一行第二行、第三行第四行,依此类推

到目前为止,我所尝试的是

DATA WANT2;
SET WANT;
BY APPT_TYPE;
IF FIRST.APPT_TYPE THEN SUPPLY-OPEN; ELSE 'ERROR';
RUN;
此抛出的eror as语句无效

我不知道该怎么办


给你。你提供的信息有限,我只能尽我所能。下次请提供样本数据和预期输出

data have;
input APPT_TYPE$ _NAME_$ Quantity;
datalines; 
ASON Supply 10
ASON Open 8
ASSN Supply 9
ASSN Open 7
S30 Supply 11
S30 Open 8
;

proc sort data = have;
    by APPT_TYPE descending _NAME_ ;
run;

data want;
    set have;
    by APPT_TYPE descending _NAME_;

    lag_N_Order = lag1(Quantity);
    N_Order = Quantity;
    Difference = lag_N_Order - N_Order;

    keep APPT_TYPE _NAME_ N_Order lag_N_Order Difference Type;
    if last.APPT_TYPE & last._NAME_ & Difference>0;
run;

请把你的资料的文字贴在问题上,而不是照片。您的图片看起来像PROC转置的输出。在转换数据之前做减法不是更容易吗?也许您可以在示例数据中包含原始数据集在转换之前的样子?@Tom感谢您的反馈Tom。我之所以转置,是因为我想先得到跨行的总计,不知道如何在proc-sql中实现。。在转置之后,我运行了数组函数来获得行的总数,然后我被困在这里。嗨,Schilker,我将尝试一下,并将记住下一次的样本数据和预期输出。还在学习,谢谢!