是否有类似isnull()或cocece()之类的东西,但没有检查零值,而是为空值。

例如:

  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

如果第一列是空的,则我不想返回四列,而第三列则应该具有Cu.email或Hu.email的值! Isnull和Coalesce在这里不工作,我不知道为什么

有帮助吗?

解决方案

您可以随时使用案例:

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

其他提示

看着 nullif(Transact-SQL)

如果两个表达式不相等,则Nullif返回第一个表达式。如果表达式相等,则nullif返回第一个表达式类型的零值。

试试这个:

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

如果cu.email和hu.email是空字符串或null的任何组合,将返回null

这将捕获null或空的cu.email,然后使用hu.email:

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top