【发布时间】:2012-05-18 08:58:05
【问题描述】:
假设我有三个表:
- 汽车 (CarID) 包含 10 个不同的汽车行。
- SafetyTests (TestID, TestName) 包含 20 个不同的安全测试行。
- TestResults(ID、TestID、CarID、TestValue)包含 0 到 200 个安全测试行之间的数字。
在安全测试表中,它包含对 Cars 表中的 10 辆汽车执行的每个安全测试的结果。最多有 20 个安全测试——这显然是从 SafetyTests 表上的 select 语句中获得的。然而,这 10 辆汽车中的一些已经完成了所有 20 次测试,而其他汽车只进行了 5 次。
我想生成一个 10 x 20 矩阵,它将显示每辆车 20 个结果(即使他们没有 20 个安全测试结果)。如果尚未在汽车上执行测试,它只会显示测试名称,但值为零(或 null)。
我认为这将是 SafetyTests 表上的一个 SELECT(以获取不同的测试 ID 列表)和一个 LEFT JOIN 到 Cars 和 TestResults 之间的 JOIN 组合上,但问题是这将返回 NULL 的 CAR ID缺少测试,因为 Car 表不匹配。
【问题讨论】:
标签: sql sql-server sql-server-2008