带有和SAS的SQL select语句

Max*_*Kim 0 sql sas

我试图用嵌套来编写SQL select语句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;
Run Code Online (Sandbox Code Playgroud)

我由于某种原因,得到一个错误在我的第一线,是不是可以使用and一个case statement

Error Message:
Error 22-322: Syntax error, expecting one of the following: !,!!,&...
Run Code Online (Sandbox Code Playgroud)

这个错误存在于最后 case statement

Gor*_*off 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;
Run Code Online (Sandbox Code Playgroud)

SAS允许列之后的其他表达式,例如FORMAT,所以我认为as需要防止表达式中的歧义.