首页 > 解决方案 > SAS 数据转换

问题描述

有人可以帮助将此 PROC SQL 代码转换为数据步骤吗?我希望数据步骤会快得多。我从 SAS-EG 生成了这段代码,所以我还不够熟练。

谢谢杰夫

PROC SQL;
  CREATE TABLE WORK.'APPAREL NEWNESS 01'n AS 
  SELECT DISTINCT t2.outletfamily AS outletfamily, 
      t2.itemid, 
      t2.itemnumberunsuppressed AS itemnumber_unsuppressed, 
      t2.ppmonth, 
      /* Dollars */
        (SUM(t2.totalvalue)) FORMAT=DOLLAR20. AS Dollars, 
      /* Units */
        (SUM(t2.unitssold)) FORMAT=COMMA20. AS Units, 
      /* Proj Dollars */
        (SUM(t2.proj_totalvalue)) FORMAT=DOLLAR20. AS 'Proj Dollars'n, 
      /* Proj Units */
        (SUM(t2.proj_unitssold)) FORMAT=COMMA20. AS 'Proj Units'n
  FROM APLSWP.vw_aplmlwk_fact_nat_nc_uns t2
  GROUP BY t2.outletfamily,
           t2.itemid,
           t2.itemnumberunsuppressed,
           t2.ppmonth;
  QUIT;

标签: sas

解决方案


  • GROUP BY和的功能SUMproc summary或类似中可用,但更丰富proc means。不幸的是,我没有可用的 SAS 许可证,因此无法为您提供代码。proc means 在此处查找您的问题已解决的示例。
  • 使用 时GROUP BY var1, var2, var3, var4,该过程会生成 var1、var2、var3 和 var4 值的不同组合。该关键字DISTINCT是不必要的。
  • 性能可能会受到数据所在位置与运行查询的位置的影响。如果查询在外部数据库(例如 Oracle)中,您可能会受益于查看所谓的“传递工具”。这允许 SAS 代码直接在数据库中运行,并利用其索引、统计信息和所有使数据库变得强大的数据库功能。

推荐阅读