【发布时间】:2015-07-17 17:29:11
【问题描述】:
我有一张订单表,
Invoice Location Customer Code SalesPersonEmail
------------------------------------------------------
300001 001 CUS001 ?
300002 006 CUS002 ?
还有一个电子邮件组表,
Role Email
-----------------------------------------------------
Filtered_Group Management@gmail.com;john@gmail.com
当 Location = 001 时,SalesPersonEmail 必须是 Filtered_Group 中的 Email 字段
所有其他位置的 SalesPersonEmail 必须是“Orders@gmail.com;” + 角色 No_Filter_Group 的电子邮件。
我目前正在使用以下方法来实现这一点,
SELECT i.Invoice, i.Location, i.[Customer Code],
CASE WHEN i.Location = 001
THEN f.Email
ELSE N'Orders@gmail.com;' + nf.Email as SalesPersonEmail
END
FROM Invoice i, RoleCodes f, RoleCodes nf
WHERE f.Role = N'Filtered_Group' AND nf.Role = N'No_Filter_Group'
我的问题是 Role No_Filter_Group 有时可能不存在于 Role 表中,这导致上述查询没有返回任何内容。
我如何正确连接这些表,所以如果表中不存在 No_Filter_Group,则 SalesPersonEmail 为 Filtered_Group 的行仍然存在从查询返回?
谢谢
【问题讨论】:
标签: sql sql-server sql-server-2008 tsql