我有一堆表,我正试图从每个表中提取各种信息。我需要的一条信息是,如果客户订阅了时事通讯,但除了电子邮件地址之外,两个表之间没有链接数据。所以,我正在尝试显示一个自定义列(例如SubscribedToNewsletter),它显示了Subscriptions.Email值中是否存在客户的电子邮件地址(即True / False)。
Customer
===============
Email
Subscriptions
===============
Email
我尝试使用CASE
和EXISTS
来尝试根据另一个表的列中是否存在值来伪造自定义列,但它不会产生任何结果。
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)
答案 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