2016-08-30 1 views
0

에 여러 필드 및 집계 (또는 롤업을)를 선택 주어진 식사 (식사는 잠재적으로 다수 조리법으로 구성됩니다).노하우는 다음과 같이 내가 여러 조인 된 테이블에 걸쳐 보고서를 작성해야 하나

각 식사에 대한 나트륨 및 콜레스테롤 값을 롤업하고 보고서에 해당 값을 복제하는 가장 좋은 방법은 무엇입니까?

나는 GROUPING SETS을 사용해 보았지만 아무런 기쁨도 얻지 못했습니다. 어떤 도움을 주셔서 감사합니다. 내가 이해에서

enter image description here

답변

1

, 당신은 mn_sodium.meas_amtm.namemn_cholesterol.meas_amt의 값의 합계를 원한다. 당신은 m.name에 의해 분할 된 행 세트에서 동일한 결과 값을 원하는대로 수행 할 수 있습니다 간단한 사용 m.namewindow functionsPARTITION BY :

SELECT 
    r.recipe_id "Recipe ID" 
    ,r.name "Recipe Name" 
    ,m.name "Meal Name" 
    ,array_agg(distinct(bucket.name)) as "Plans" 
    ,mn_sodium.meas_amt "Recipe Sodium" 
    ,mn_cholesterol.meas_amt "Recipe Cholesterol" 
    ,sum(mn_sodium.meas_amt) OVER(PARTITION BY m.name) AS "Meal Sodium" 
    ,sum(mn_cholesterol.meas_amt) OVER(PARTITION BY m.name) "Meal Cholesterol" 
FROM 
... 

는 재사용을 위해 따로 창을 명명되어 사용할 수있는 또 다른 구문 :

SELECT 
    r.recipe_id "Recipe ID" 
    ,r.name "Recipe Name" 
    ,m.name "Meal Name" 
    ,array_agg(distinct(bucket.name)) as "Plans" 
    ,mn_sodium.meas_amt "Recipe Sodium" 
    ,mn_cholesterol.meas_amt "Recipe Cholesterol" 
    ,sum(mn_sodium.meas_amt) OVER w_meal AS "Meal Sodium" 
    ,sum(mn_cholesterol.meas_amt) OVER w_meal "Meal Cholesterol" 
FROM 
... 
WINDOW w_meal AS (PARTITION BY m.name) 
+0

간단히 환상적입니다! 정확히 내가 필요로하는 것. 나는 방법이 있다고 생각했다. 고맙습니다! – Midwire

+0

환영합니다 ... : D – MatheusOl

관련 문제