什么相当于 SAS Proc Sql 中的分组集?

What is the equivalent to grouping sets in SAS Proc Sql?

我有一个 Teradata 查询,它有一个分组依据,然后使用分组集将这些组汇总到一个总行中:

SELECT mygroup, count(x), sum(y)
FROM mytable
ORDER BY GROUPING (mygroup),mygroup
GROUP BY mygroup GROUPING SETS ((mygroup),())

我现在正在 SAS EG 中编写相同的查询,因为我想创建一个计划报告以通过电子邮件发送。

SAS EG 没有分组集 google。

我的问题是如何在 SAS PROC SQL 中创建此 "summary line",或者可能通过其他一些 SAS EG 魔术?

编辑:这是我正在寻找的输出示例:

这是我目前在SAS EG中缺少的总行

更新: 我现在已经写了一个 Proc Tabulate 并且我接近我的目标。我似乎无法正确理解的唯一字段是总百分比差异。在 table 中,我做了一个总计行,其中我对 Number1 和 2 求和,但是对于百分比总数,我想要计算 (Number1-Number2)/Number1 而不是总和或其他聚合。这可以通过制表实现吗?我该怎么做?

我当前的代码:

PROC TABULATE
DATA=WORK.TEMP;

VAR Number1 Number2 percentageCalc ;
CLASS group /   ORDER=UNFORMATTED MISSING;
CLASS date /    ORDER=UNFORMATTED MISSING;
TABLE 
    /* ROW Statement */
    group*date
    all = 'Total'  ,
    /* COLUMN Statement */
    (Number1 * Sum={LABEL="Sum"} Number2 * Sum={LABEL="Sum"} percentageCalc  * Sum={LABEL="%"} )        ;
;

RUN;

有什么方法可以在我的最后一个总计单元格中进行手动计算,或者我可以以某种方式手动创建整个总计行吗?

我不确定我是否在这里搞错了,如果我是你,我会在 PROC SQL(SAS EG 中的查询向导)中进行分组以对数据进行分组,然后我会使用 PROC TABULATE(SAS EG 中的摘要 Table 向导)来获得你想要的。您还可以一次性在汇总向导中对数据进行分组和制表。

代码如下:

data have; 
  input date $ number1 number2 ;
  datalines; 
  23.02.2016 2004 1951
  16.03.2016 14999 14670
  20.04.2016 20054 18999
 ;

PROC TABULATE
DATA=WORK.HAVE; 
    VAR number1 number2;
    CLASS date /    ORDER=UNFORMATTED MISSING;
    TABLE /* Row Dimension */
date 
ALL={LABEL="Total (ALL)"},
/* Column Dimension */
number1*
  Sum*
    ALL={LABEL="Total (ALL)"} 
number2*
  Sum*
    ALL={LABEL="Total (ALL)"}       ;
    ;

RUN;

摘要视图Table 任务:

结果如下: