2013-07-22 3 views
0

Я пытался написать SQL отборное заявление с вложенной and, чтобы получить некоторые данные:SQL выберите заявление с и SAS

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 с case statement?

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

Эта ошибка существует в самом конце case statement

+1

Какое сообщение об ошибке? –

+0

Ваш запрос выглядит хорошо, я не знаком с SAS, но вы можете определенно использовать 'AND' в' CASE'. –

ответ

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 допускает другие выражения после столбца, такие как FORM AT, поэтому я думаю, что as необходим для предотвращения неоднозначности выражений.

+0

спасибо, что сделал трюк. –

2

Вы должны АС:

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; 
Смежные вопросы