2017-09-06 3 views
1

J'ai une table nommée Employee avec des champs Id, adresse, PHONE_NO, salaire, date_of_joining et flux. Il contient une seule ligne et les champs:extrait de 'nom de la colonne' sur la base d'une condition

  • Id, le salaire et flux sont remplis avec des valeurs
  • alors que adresse, PHONE_NO et date_of_joining contiennent NULL valeurs.

Je veux la sortie que les champs qui contiennent NULL valeurs, à savoir adresse, PHONE_NO et date_of_joining. Cela doit être exécuté dans Oracle SQL. Je n'ai aucune idée de comment s'y prendre.

Entrée:

EMPLOYEE      
Id Address phone_no salary  date_of_joining stream 
101 NULL  NULL  8,00,000 NULL    Big Data 

Sortie:

Address, 
phone_no, 
date_of_joining 

Répondre

1

Vous pouvez le faire explicitement:

select 'Id' from t where Id is null union all 
select 'Address' from t where Address is null union all 
select 'phone_no' from t where phone_no is null union all 
select 'salary' from t where salary is null union all 
select 'date_of_joining' from t where date_of_joining is null union all 
select 'stream' from t where stream is null; 
0

Vous pouvez le faire de cette manière (identique à la solution de Gordon, mais dans un enregistrement):

Select Id, 
case when phone_no is null then 'phone_no, ' else '' end || 
case when Address is null then 'Address, ' else '' end || 
case when date_of_joining is null then 'date_of_joining' else '' end as Null_values 
from t;