2017-03-16 5 views
0

자주 SUM, COUNT 및 NVL()을 많이 수행하는 쿼리를 수행합니다. 대부분의 경우 계산 된 값을 이전과 동일하게 호출합니다.별칭을 쉽게 할당하는 방법이 있습니까? 예 : SUM (deposit_amount) as deposit_amount

그래서 예를 들어 현재 내 코드에서이 있습니다

sum(vl.margin_1d) as margin_1d, 
    sum(vl.margin_7d) as margin_7d, 
    sum(vl.margin_14d) as margin_14d, 
    sum(vl.margin_28d) as 
    sum(vl.margin_35d) as 
    sum(vl.margin_42d) as 
    sum(vl.margin_56d) as 

    sum(vl.deposit_1d) as 
    sum(vl.deposit_7d) as 
    sum(vl.deposit_14d) as 
    sum(vl.deposit_28d) as 
    sum(vl.deposit_35d) as 
    sum(vl.deposit_42d) as 
    sum(vl.deposit_56d) as 

이 같은 부하를 더 계산 된 값이 동일한을 입력 그래서 시간이 많이 걸립니다 (그리고 꽤 지루한) 각 합계 후에 별칭.

좀 더 쉽게 할 수있는 트릭이 있습니까?

내가 좋아하는 뭔가 생각 해요 :

SUM(deposit_7d) as SAME 

감사합니다, 소피

P.S. 이 코드 조각은 임팔라에 있지만, 오라클도 자주 사용합니다.

+2

'SUM (deposit_7d)'는'deposit_7d'와 동일하지 않으므로 명시 적 별칭이 필요합니다. –

답변

2

일부 입력을 피하기 만하면 원하는 작업을 수행 할 수 있습니다. 당신이있는 경우

select 'sum(vl.'||column_name||') as '||column_name||',' 
from all_tab_columns 
where table_name = 'YOUR_TABLENAME' 
and column_name in (...) 
order by column_name; 

또는 당신은 열 이름과 출력의 목록을 각 열 이름에 대해 원하는 데이터를 취할 Excel 및 그 CONCATENATE() 공식을 사용할 수 있습니다, 또는 오라클에, 내가 좋아하는 뭔가를 할 것 비슷한 일을 할 수있는 정규 표현식을 지원하는 텍스트 편집기.