【发布时间】:2017-11-15 05:50:54
【问题描述】:
我存储了 2 种不同的备份类型(完整或日志),并且还有 2 种不同的服务器类型(本地或 Azure),下面的此查询将返回正确的结果,因为返回了 3 行,但是当我删除与此相对应的行时SQL 查询中的行:
AND (r4.Type = 'Full' AND r4.Server = 'Azure')
然后只检索 2 行,因为它们不是类型“完整”和服务器“Azure”的表中存在的行
这是我完成的查询:
SELECT DISTINCT
r1.Tenant,
r1.Name,
r1.DBName,
r1.Server as Server1,
r1.Type as Type1,
r1.Date as Date1,
r2.Type as Type2,
r2.Date as Date2,
r2.Server as Server2,
r3.Type as Type3,
r3.Date as Date3,
r3.Server as Server3,
r4.Type as Typ4,
r4.Date as Date4,
r4.Server as Server4
FROM #Results AS r1
JOIN #Results AS r2 ON r2.DBName = r1.DBName
JOIN #Results AS r3 ON r3.DBName = r1.DBName
JOIN #Results AS r4 ON r4.DBName = r1.DBName
WHERE
(r1.TYPE = 'Full' AND r1.Server = 'Local') AND
(r2.TYPE = 'Log' AND r2.Server = 'Local') AND
(r3.Type = 'Full' AND r3.Server = 'Azure') AND
(r4.Type = 'Log' AND r4.Server = 'Azure')
ORDER BY r1.Tenant
从上面的屏幕截图可以看出,这是检索到的数据。我希望另一行包含以下内容:
- 日志,本地
- 完整,本地
- 日志,Azure
- NULL、NULL(因为不存在完整的 Azure 备份)
这是 Result 表中的数据:
【问题讨论】:
-
请改用
LEFT JOIN。添加示例数据和预期输出,以便我们提供更详细的答案 -
@JuanCarlosOropeza 即使这样也行不通。仍然只检索到 2 个结果
-
正如我所说,向我们展示示例数据和预期输出。
-
@JuanCarlosOropeza 添加了示例数据
-
你只包括欲望输出。请添加源数据。就像让魔术师在没有正确设置的情况下做魔术一样。