2017-04-12 1 views
0

enter image description hereÜberprüfen Sie alle Werte in einer anderen Spalte (NULL oder NOT NULL) und einzigartige Datensätze zurück

Wie Sie für cid = 1 sehen alle Datumsfelder sind NULL und für cid = 3 alle Datumsfelder sind NOT NULL.

Ich brauche eindeutige CIDs mit neuen Feld, wenn alle Daten NULL sind dann mit "NULL" und wenn alle Termine NOT NULL sind dann mit "NOT NULL".

cid - new field 
1 - NULL 
3 - NOT NULL 
+0

beachten Sie bitte Datenbeispieltabelle und das erwartete Ergebnis in formatierten Text hinzufügen. Zeigen Sie uns auch Ihren aktuellen Abfrageversuch – TheGameiswar

+0

welche Datenbank benutzen Sie. – Utsav

+0

Ich benutze postgreSQL –

Antwort

2

Sie können dies mit Aggregation und case:

select cid, 
     (case when count(datecol) = 0 then 'NULL' 
      when count(datecol) = count(*) then 'NOT NULL' 
     end) as newField 
from t 
group by cid 
having count(datecol) in (0, count(*)); 
+0

Vielen Dank –

2
select cid, case when min(c) = 0 AND max(c) = 0 then 'null' when min(c) = 1 and max(c) = 1 then 'not null' end from (
    select cid, case when dt is null then 0 else 1 end as c from your_table 
) t 
group by cid 
having min(c) = max(c) 
Verwandte Themen