我已经为我的问题找到了几种解决方案,但是在我的情况下我无法应用它。
基本上我有一张车辆表:
License VIN Region
1 1 1
1 2 2
2 3 1
2 3 2
3 4 1
3 4 2
3 5 3
我想从区域1获取许可证和vin,并根据许可证查看vin是否在所有其他区域匹配。如果不是,我想要所有不匹配的行,但如果它匹配,我不想要该行。因此,当我说有3个许可证且区域1匹配一行而不是另一个时,确实会出现复杂性,我希望两者都是不匹配的,区域1;但是,当我有3个全部匹配的许可证时,我不想要任何行,包括区域1。
所以我在这种情况下的结果将是:
License VIN Region
1 1 1
1 2 2
3 4 1
3 5 3
我正在使用SQL Server 2005。
答案 0 :(得分:2)
我认为这就是你要找的东西
SELECT DISTINCT a.*
FROM Vehicle AS a
INNER JOIN Vehicle AS b
ON a.License = b.License
WHERE a.VIN != b.VIN
AND a.Region != b.Region
AND (a.Region = 1 OR b.Region = 1)