【发布时间】:2017-03-29 06:10:39
【问题描述】:
我需要一个 SQL 查询来处理一个有点复杂的 SELECT。假设以下表格:
表 1: 表 2: 姓名 |电子邮件 |电话卡ID |姓名 |电子邮件 -------|------------|-------------- ---|--------|-- -------------- 第一 |电子邮件@mail.com |空 1 |第二 | second@mail.com 第二 | | 1 第三| |空值输出应该是:
姓名 |电子邮件 --------|----------- 第一 |电子邮件@mail.com 第二 | second@mail.com 第三| -查询应该类似于
SELECT table1.name, COALESCE(NULLIF(table1.email, ''),
CASE WHEN table1.callingcardid != NULL
THEN (SELECT table2.email WHERE id = table1.callingcardid) ELSE '-' END) "email"
语法显然是错误的,因为我无法让它工作。还有一些其他列与其他表的连接,但除此之外它可以工作。 CASE 子句是问题制造者。
数据库是 Microsoft SQL Server 2008(或 2012)。
【问题讨论】:
-
您的 JOIN 在哪里?您能提供完整的 SQL 查询吗?。
-
没有 FROM 子句?
标签: sql sql-server tsql select case