假设我有一个这样的 SQL Server 表:
Event | Item1 | Item2 | Status
-------------------------------------------
1 Parent1 Child1 1
2 Parent1 Child2 1
3 Parent2 Child1 1
4 Parent2 Child2 1
5 Parent3 Child1 1
6 Parent3 Child2 0
7 Parent4 Child1 1
8 Parent4 Child1 1
9 Parent4 Child2 0
我想要一个给我以下信息的查询:
- 所有状态为 0 的行。=> 那将是 ID 6 和 9。
- 具有 Item2 = 'Child1'、状态为 1、具有与 #1 中的结果相同的 Item1 的所有行。=> 那将是 ID 5,7 和 8。
- 可以有多个匹配 #2 的行,并且匹配项应限制为基于每个项目 1 的最大 id。
所以最终的结果应该是这样的:
6, Parent3, Child2, 0
9, Parent4, Child2, 0
5, Parent3, Child1, 1
8, Parent4, Child1, 1
此解决方案在 SQL 2008 R2 中。我对临时表、联合、联接等持开放态度。我无法更改架构。非常感谢任何帮助。