我正在运行一个sql查询(使用microsoft report builder)连接三个表并得到重复的表,我似乎无法阻止这一点。
我有一个表(tableA),其中包含相关字段ownerID、propertyID、vacationDate。我想找到房主的名字和他们所在的最新房产。(他们可能在多处房产中,我只对最近的一处房产感兴趣)所有者的姓名位于Ownertable上,并通过ownerID链接,而房产地址位于propertytable下,并通过propertyID链接。我试图用最新的假期日期和特定的属性ID获取每个OwnerID,然后内部连接两个表以获取名称和地址。我曾尝试选择“max(vacation)”,然后选择“GROUP BY”,但我遇到了问题,因为我使用的是报表生成器,并且必须在所有字段上使用GROUP BY子句,而不仅仅是OwnerID,这也会为每个单独的属性带来最新的vac日期。请找个人把我带上正轨。非常感谢。
我所做的一件事的样本;
对不起,我没有在我的电脑上给一个确切的例子,这里是一个简化的版本,如果这有帮助。
table A
ownerid propertyid vacation
1 2 1991
2 5 1993
1 3 1992
1 4 1997
2 6 2000
2 9 2007
因此,我想为每个所有者选择一行,其中包含上一个假期的属性id,对于这个示例,我希望如下所示
ownerid propertyid vacation
1 4 1997
2 9 2007
我在下面尝试了这个,但得到了重复的。
SELECT tableA.propertyid, tableA.ownerid, MAX(tableA.vacation), propertytable.propertyname, ownertable.ownername FROM tableA
INNER JOIN propertytable on tableA.propertyid = propertytable.id
INNER JOIN Ownertable on tableA.ownerid = ownertable.id
GROUP BY tableA.property, tableA.owner, propertytable.propertyname, ownertable.ownername