2014-03-06 32 views
0

请帮我来自这导致表MSISDN和BAN列DECODE - REMOVE NULL值

SELECT Decode(pk.property_name, 'msisdn', pv.text_value) MSISDN, 
Decode(pk.property_name, 'BAN', pv.text_value) BAN 
FROM PROPERTY_VALUE pv, PROPERTY_KEY pk 
WHERE pv.entity_id IN 
(select entity_id from property_value pv where pv.text_value in('ConsumerUnauthenticated')) 
and pv.property_key_id = pk.property_key_id 

删除空值。这两列都包含NULL和NOT NULL值。我想从结果表中消除NULL。请帮忙。

BAD - 

MSISDN BAN 
null  xyz 
null  abc 
1213  null 
null  def 
1211  null 

,我想我的结果是

MSISDN BAN 
1213  xyz 
1211  abc 
      def 
+0

你正在使用什么服务器? –

+0

Oracle DB 11g - NOT SURE –

+0

bu您的要求和上面的查询不符?你究竟想要什么?你想用上面的查询做什么? –

回答

0

你真的不应该这样做。检查你的问题下的意见。但这是查询:

SELECT MSISDN, BAN 
FROM (
    SELECT pv.text_value MSISDN, rownum rn 
    FROM PROPERTY_VALUE pv, PROPERTY_KEY pk 
    WHERE pv.entity_id IN (select entity_id from property_value pv where pv.text_value in('ConsumerUnauthenticated')) 
    AND pv.property_key_id = pk.property_key_id 
    AND pk.property_name = 'msisdn' 
    AND pv.text_value IS NOT NULL 
) FULL OUTER JOIN ( 
    SELECT pv.text_value BAN, rownum rn 
    FROM PROPERTY_VALUE pv, PROPERTY_KEY pk 
    WHERE pv.entity_id IN (select entity_id from property_value pv where pv.text_value in('ConsumerUnauthenticated')) 
    AND pv.property_key_id = pk.property_key_id 
    AND pk.property_name = 'ban' 
    AND pv.text_value IS NOT NULL 
) USING (rn) 
ORDER BY rn;