PROC SQL 전문가에게 질문이 있습니다. 나는 변수가에 대한 선택 같은에 있어야한다고 생각, 하위 쿼리의 계산 된 변수
proc sql;
create table FinalData as
select *
,Sum(starting_year,year_diff) as colsum
,Price*(1+(SELECT Return from OtherData where Year=calculated colsum)) as PriceFinal
from MainData;
quit;
은 분명히
calculated
키워드가 작동하지 않습니다 :이 코드가 있습니다. 하나의 SQL 문 내에서 하위 쿼리에 모두
colsum
을 계산하여 사용할 수 있기를 원합니다. 모든 서브 쿼리에서
colsum
을 다시 계산하지 않도록하고 싶습니다. 매번 다시 계산할 경우 코드가 느려질 수있는 더 복잡한 함수를 사용할 것이기 때문입니다.
거의 같은 것으로 보이는이 question을 찾았지만 그 대답으로 코드 작업을 관리하지 못했습니다.
편집 : 코드가 약간 변경되었습니다.
실제로는 Year=calculated colsum
을 의미합니다. OtherData는 기본적으로 참조 테이블이며 Year
에는 중복이 없습니다. 다음은 예입니다.
MainData OtherData
[Price] [starting_year] [year_diff] [Return] [Year]
5.00 2010 5 0.04 2015
2.33 2013 3 0.02 2016
4.51 2011 1 0.005 2017
0.1 2018
값이 누락 될 수 있습니다. 여러 proc SQL 문을 사용하여이 작업을 쉽게 수행 할 수 있지만 한 가지 작업 만 수행하면됩니다. SUM
은 OtherData에서 조회 할 출력을 생성하는 다른 함수가 될 수 있습니다.
이 방법이 있습니까?
합니다. . 너 정말로 무엇을하려고하는거야? 하위 쿼리는 경우에 따라 둘 이상의 행을 반환하는 것으로 보이며 오류가 발생하는 경우가 많습니다. –
저에게 TSQL/etc와 같은 느낌이 듭니다. 일반적으로 이것을 WITH 절/질의/어떤 것으로 실행 하겠지만 SAS는 불행하게도 그러한 절이 없습니다. – Joe
maindata 및 기타 데이터의 모양에 대한 자세한 정보를 제공하면 누군가가 더 나은 접근 방식을 제안 할 수 있습니다. – scott