【发布时间】:2011-04-05 17:30:29
【问题描述】:
我有这些表(在 SQL-Server 2008 R2 中):
表1:
Id Guid
1 {530D8FE1-7541-43CC-9F92-1AA776490155}
2 {CAC5B001-C8DE-46AA-A848-5D831633D0DF}
3 NULL
表2:
Id Column1 Table2FK
1 1 1
2 1 2
3 1 3
我想执行一个聚合 Table2.Column1 的查询,并将其连接到具有最大 Id 的 Table1 行,但包含 Table1.Guid 的非空值。在这种情况下,它应该加入 Table1 的第 2 行。写成查询我想要这样的东西(虽然这不是有效的 sql):
select t2.Id, t2.Column1, t2.Table2FK, max(t1.Id), t1.Guid
from Table2 t2
join Table1 t1 on t2.Table2FK = t1.Id
where t1.Guid is not null
group by t2.Column1
我已经设法分别对Table2.Id2 进行了空值检查和聚合,但不是在同一个查询中。在第一种情况下,连接返回 2 行,在第二种情况下,它连接到 Table1 的第 3 行。
【问题讨论】:
-
您尚未指定列在输出结果集中实际期望的内容
-
我放在select子句中的那些(基本上都是)
-
table2fk 不是 table1 中引用 id 的外键吗?如果是的话,你为什么要在结果中列出它们。我建议多考虑一下这个问题并完善你的问题陈述以获得更好的回应
-
@Aadith Yes table2fk 是 table1 的外键
标签: sql sql-server sql-server-2008