2017-09-18 3 views
0

내 질문에 도움이 필요합니다. 내가 예를다른 WHERE 조건으로 나누기

SELECT 
    TO_CHAR(PS.REPORT_PERIOD_END_DATE, 'YYYY') AS YR, 
    SUM(T1.PRICE) AS COLUMN_1 
FROM TABLE_ONE T1 
    INNER JOIN SUB_STATUSES status ON status.SUB_ID = T1.ID 
    WHERE status.R_SUB_STATUS_CODE = 'COMPLETED' 
AND T1.TYPE = 'COMPANY' OR T1.TYPE = 'SMALL_BUSINESS' 
GROUP BY TO_CHAR(PS.REPORT_PERIOD_END_DATE, 'YYYY') 
ORDER BY TO_CHAR(PS.REPORT_PERIOD_END_DATE, 'YYYY') DESC 

DIVIDE BY 

SELECT 
TO_CHAR(PS.REPORT_PERIOD_END_DATE, 'YYYY') AS YR, 
    SUM(T1.PRICE) AS COLUMN_1 
from TABLE_ONE T1 
    INNER JOIN SUB_STATUSES status ON status.SUB_ID = T1.ID 
    WHERE status.R_SUB_STATUS_CODE = 'COMPLETED' 
AND T1.TYPE = 'LOT' OR T1.TYPE = 'LAND' 
GROUP BY TO_CHAR(PS.REPORT_PERIOD_END_DATE, 'YYYY') 
ORDER BY TO_CHAR(PS.REPORT_PERIOD_END_DATE, 'YYYY') DESC 

첫 번째 칼럼에 대해 서로 다른 조건 컬럼의 합을 나누는 시도하고이 반환

2017 1094 
2016 89 
2015 95 
2014 101 
2013 113 
2012 173 
2011 191 
2010 165 
+0

원본 테이블을 표시 할 수 있습니까? – Ghemon

답변

1

사용 대신에 where 절의 경우 문. 외부 쿼리 검사는 0으로 나눕니다.

SELECT yr, case when column_2 <> 0 then column_1/column2 else 0 end divcol 
FROM (
    SELECT 
    TO_CHAR(PS.REPORT_PERIOD_END_DATE, 'YYYY') AS YR, 
    SUM(case when t1.type in ('COMPANY', 'SMALL_BUSINESS') THEN T1.PRICE ELSE 0 END) as COLUMN_1, 
    SUM(case when t1.type in ('LOT', 'LAND') THEN T1.PRICE ELSE 0 end) AS COLUMN_2 
    FROM TABLE_ONE T1 
     INNER JOIN SUB_STATUSES status ON status.SUB_ID = T1.ID 
    WHERE status.R_SUB_STATUS_CODE = 'COMPLETED' 
    GROUP BY TO_CHAR(PS.REPORT_PERIOD_END_DATE, 'YYYY') 
) 
ORDER BY yr DESC