自定义输出列基于某个值是否存在于另一个不相关的表的任何记录中

时间:2015-08-10 08:52:34

标签: sql case exists

我有一堆表,我正试图从每个表中提取各种信息。我需要的一条信息是,如果客户订阅了时事通讯,但除了电子邮件地址之外,两个表之间没有链接数据。所以,我正在尝试显示一个自定义列(例如SubscribedToNewsletter),它显示了Subscriptions.Email值中是否存在客户的电子邮件地址(即True / False)。

Customer
===============
Email

Subscriptions  
===============
Email

我尝试使用CASEEXISTS来尝试根据另一个表的列中是否存在值来伪造自定义列,但它不会产生任何结果。

SELECT 
CASE WHEN Subscriptions.Email = Customer.Email THEN 'True' ELSE 'False' END
FROM Customer
INNER JOIN Subscriptions ON 1=1
WHERE EXISTS (SELECT 1 FROM Customer WHERE Subscriptions.Email = Customer.Email)

1 个答案:

答案 0 :(得分:4)

使用相关的子查询来计算每个客户的订阅数量:

select c.*,
       case when (select count(*) from Subscriptions s
                  where s.Email = c.Email) > 0 then 'True'
            else 'False'
       end
from customers c