1. 程式人生 > 其它 >去除groupBy目標欄位分組後資料為null的記錄

去除groupBy目標欄位分組後資料為null的記錄

 1 WITH TEMP1 AS (
 2         SELECT *
 3         FROM IPLAT4J.TMMICSALJ01 T01
 4         WHERE PROD_UNIT in ('1LJ','3LJ','4LJ')  and PROD_DATE BETWEEN '20220306' AND '20220306'
 5         order by PROD_UNIT),
 6         TEMP2 AS (
 7         SELECT *,CASE WHEN PROD_UNIT='1LJ' THEN nvl(ACT_COST,0) ELSE 0
 8         end
as ACT_COST1, CASE WHEN PROD_UNIT='3LJ' THEN nvl(ACT_COST,0) ELSE 0 9 end as ACT_COST3,CASE WHEN PROD_UNIT='4LJ' THEN nvl(ACT_COST,0) ELSE 0 10 end as ACT_COST4 11 FROM TEMP1 ), 12 TEMP3 AS ( 13 SELECT *,CASE WHEN PROD_UNIT='1LJ' THEN nvl(ACT_CONSUME_DH,0) ELSE 0 14
end as ACT_CONSUME_DH1, CASE WHEN PROD_UNIT='3LJ' THEN nvl(ACT_CONSUME_DH,0) ELSE 0 15 end as ACT_CONSUME_DH3,CASE WHEN PROD_UNIT='4LJ' THEN nvl(ACT_CONSUME_DH,0) ELSE 0 16 end as ACT_CONSUME_DH4 17 FROM TEMP2 ) 18 SELECT MAT_CODE,MAX(TYPE1_NAME) AS TYPE1_NAME,MAX
(TYPE2_NAME) AS TYPE2_NAME,MAX(TYPE3_NAME) AS TYPE3_NAME,MAX(COST_SUBJECT_NAME) AS COST_SUBJECT_NAME, 19 MAX(ACT_COST1) AS ACT_COST1,MAX(ACT_COST3) AS ACT_COST3,MAX(ACT_COST4) AS ACT_COST4,MAX(ACT_CONSUME_DH1) AS ACT_CONSUME_DH1, 20 MAX(ACT_CONSUME_DH3) AS ACT_CONSUME_DH3,MAX(ACT_CONSUME_DH4) AS ACT_CONSUME_DH4 21 FROM TEMP3 GROUP BY MAT_CODE

執行sql後的結果想把為null的行去掉

 

 於是乎,我就在group by 後加上了HAVING COUNT(TYPE3_NAME)>0,然後問題就解決了

 

 HAVING COUNT(目標欄位) 是對group by分組後的資料再過濾的方法。