Domanda

C'è qualcosa di simile ISNULL () o COALESCE (), ma non che i controlli di valore nullo, ma per un valore vuoto.

Ad esempio:

  SELECT cu.last_name, cu.first_name, cu.email, hu.email FROM 
 (SELECT DISTINCT c.first_name, c.last_name, c.email, c.household_id, h.head_of_household_id
  FROM rd_customers c
  JOIN rd_households h ON c.household_id = h.household_id
  JOIN ad_registrations r ON r.customer_id = c.customer_id
  JOIN ad_meeting_times a ON  r.session_id = a.session_id and a.meeting_time_id = 203731) cu
  LEFT JOIN rd_customers hu ON hu.customer_id = cu.head_of_household_id

invece di restituire quattro colonne mi piacerebbe ottenere tre e il terzo supponiamo di avere valori sia di cu.email o hu.email se il primo è vuoto! ISNULL e COALESCE non funzionano qui non so il motivo per cui

È stato utile?

Soluzione

È sempre possibile utilizzare caso:

select  case when cu.email is null or cu.email = '' then hu.email 
             else cu.email end as ColumnName
from    YourTable

Altri suggerimenti

NULLIF (Transact-SQL)

  

NULLIF restituisce la prima espressione se   le due espressioni non sono uguali. Se   le espressioni sono uguali, NULLIF   restituisce un valore nullo del tipo di   la prima espressione.

provare questo:

COALESCE(NULLIF(cu.email,''),NULLIF(hu.email,''))

restituirà NULL se cu.email e hu.email sono qualsiasi combinazione di stringa vuota o NULL

Ciò interferirà nullo o cu.email vuoto e uso hu.email invece:

SELECT cu.last_name, 
       cu.first_name, 
       CASE WHEN ISNULL(cu.email, '') = '' THEN
            hu.email
       ELSE
            cu.email
       END AS email
FROM 
(
  SELECT DISTINCT c.first_name, 
                  c.last_name, 
                  c.email, 
                  c.household_id, 
                  h.head_of_household_id
  FROM rd_customers c
  JOIN rd_households h 
    ON c.household_id = h.household_id
  JOIN ad_registrations r 
    ON r.customer_id = c.customer_id
  JOIN ad_meeting_times a 
    ON  r.session_id = a.session_id 
      AND a.meeting_time_id = 203731
) cu
LEFT JOIN rd_customers hu 
  ON hu.customer_id = cu.head_of_household_id
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top