0

我试图编写一个嵌套的 SQL 选择语句and来获取一些数据:

PROC SQL;

CREATE TABLE WORK.TEMP AS

SELECT DISTINCT

(CASE WHEN t1.TYPE_OF_SALE = 'Cake' AND t1.ADD_ON_FLAG = 0 THEN 'Arrangements'

WHEN t1.TYPE_OF_SALE = 'Cake' AND t1.ADD_ON_FLAG = 1 THEN 'Add-ons'

ELSE 'Direct' END) SALE_TYPE, #ERROR IN THIS LINE


(t1.UNIT_PRICE+t1.SERVICE_CHARGE_AMT) AS TOTAL_VAL

FROM WORK.FB_ORDERS t1

ORDER BY SALE_TYPE;

QUIT;

出于某种原因,我的第一行出现错误,不能and与 a一起使用case statement吗?

Error Message:
Error 22-322: Syntax error, expecting one of the following: !,!!,&...

此错误存在于末尾case statement

4

2 回答 2

5

我认为问题在于 SAS 需要as定义列别名:

PROC SQL;
CREATE TABLE WORK.TEMP AS
    SELECT DISTINCT (CASE WHEN t1.TYPE_OF_SALE = 'Cake' AND t1.ADD_ON_FLAG = 0 THEN 'Arrangements'
                          WHEN t1.TYPE_OF_SALE = 'Cake' AND t1.ADD_ON_FLAG = 1 THEN 'Add-ons'
                          ELSE 'Direct'
                      END) as SALE_TYPE,
                    (t1.UNIT_PRICE+t1.SERVICE_CHARGE_AMT) AS TOTAL_VAL
    FROM WORK.FB_ORDERS t1
    ORDER BY SALE_TYPE;

QUIT;

SAS 允许在列之后使用其他表达式,例如 FORMAT,因此我认为as需要防止表达式中的歧义。

于 2013-07-22T20:31:43.500 回答
2

你需要一个 AS:

proc sql;
select distinct
(case when age<14 and sex='F' then "Young Girl"
      when age<14 and sex='M' then "Young Boy"
      else "Other" end) as type from sashelp.class;
      quit;
于 2013-07-22T20:29:21.310 回答