Oracle union捕获所有值

时间:2013-01-09 19:45:49

标签: sql oracle

我有一个表格,其中一列名为PEGA ID,列的值为111,222等,而且还有一些0,当我执行qry时,所有的0都被过滤,我怎么能算这些0也可以,我可以使用工会?

SELECT  
    ivr.dw_dealer_id, 
    ivr.dw_product_id, 
    ivr.dw_program_type_id, 
    ivr.dw_month_id, 
    TO_CHAR(ivr_update_dt, 'YYYYMM') buss_month, 
    count(*)
FROM  idm_ivr_interaction ivr, stgdba.interactions intr
WHERE ivr.cti_rec_id = intr.pega_id

1 个答案:

答案 0 :(得分:0)

编辑:由于OP明确提到它是0而不是null,我们将查询更改为使用case

count(case when ivr.dw_dealer_id = 0 then 1 else ivr.dw_dealer_id end)

或者只使用上一个OR的查询。

SELECT  
        ivr.dw_dealer_id, 
        ivr.dw_product_id, 
        ivr.dw_program_type_id, 
        ivr.dw_month_id, 
        TO_CHAR(ivr_update_dt, 'YYYYMM') buss_month, 
        count(ivr.dw_dealer_id) as counts
    FROM  idm_ivr_interaction ivr, stgdba.interactions intr
    WHERE ivr.cti_rec_id = intr.pega_id
    AND (intr.pega_id IS NULL OR ivr.cti_rec_id IS NULL)

围绕id ...

包裹nvl
SELECT  
    ivr.dw_dealer_id, 
    ivr.dw_product_id, 
    ivr.dw_program_type_id, 
    ivr.dw_month_id, 
    TO_CHAR(ivr_update_dt, 'YYYYMM') buss_month, 
    count(nvl(ivr.dw_dealer_id,1))
FROM  idm_ivr_interaction ivr, stgdba.interactions intr
WHERE ivr.cti_rec_id = intr.pega_id
AND (intr.pega_id IS NULL OR ivr.cti_rec_id IS NULL)
  • BTW应该有Group By ...与你正在使用的count .......