2017-12-06 3 views
0

나는 데이터 세트에서 특정 기간 동안 다른 제품의 이름과 가격을 반환하기 위해 CASE WHEN 문을 사용하지만 고유 제품 당 많은 행이 반환됩니다. 이것은 CASE WHEN의 잘못된 사용입니까? 그렇다면 어떻게 수정합니까?Null 값이 여러 행에 반환되는 경우 - 단일 행?

|product_name|Period_1|Period_2|Period_3| 
|1st Product | $25 | 0 | 0 | 
|1st Product | 0 | $35 | 0 | 
|1st Product | 0 | 0 | $20 | 
|1st Product | 0 | 0 | 0 | 

가 어떻게하여 이러한 행을 통합하고 가겠어요 :

SELECT product_name, 
    CASE WHEN period_fiscal_year=1 THEN product_price ELSE 0 END as Period_1, 
    CASE WHEN period_fiscal_year=2 THEN product_price ELSE 0 END as Period_2, 
    CASE WHEN period_fiscal_year=3 THEN product_price ELSE 0 END as Period_3 
FROM product_table 

결과는 이상적이 (하나의 예)과 같아야는 : 같은

|product_name|Period_1|Period_2|Period_3| 
|1st Product | $25 | $35 | $20 | 

현재는 보인다 0 값을 제거 하시겠습니까? 고맙습니다!

답변

2

테이블의 첫 번째 항목에 두 개 이상의 항목이있어 다른 기간의 가격을 product_name 수준으로 집계해야하는 것 같습니다.

SELECT product_name, 
SUM(CASE WHEN period_fiscal_year=1 THEN product_price ELSE 0 END) as Period_1, 
SUM(CASE WHEN period_fiscal_year=2 THEN product_price ELSE 0 END) as Period_2, 
SUM(CASE WHEN period_fiscal_year=3 THEN product_price ELSE 0 END) as Period_3 
FROM product_table 
GROUP BY product_name;