SQL 查询从 3 table 内部联接获得多个结果

SQL Query getting multple results from 3 table inner join

我是 运行 一个 sql 查询(使用 Microsoft Report Builder)加入三个 table 并得到重复项,我似乎无法阻止它。

我有一个 table (tableA),其中包含相关字段 ownerID、属性ID、vacationDate。我想找到所有者的名字和他们所在的最新属性。(他们可能已经在几个属性中,我只对最新的感兴趣)所有者名称保留在所有者table 并由 ownerID 链接,属性 地址位于 属性table 下并由 属性ID 链接。我试图让每个 OwnerID 具有最新的假期日期和那个特定的 属性ID,然后在内部连接两个 tables 以获取姓名和地址。我试过 selecting 'max(vacation)' 然后 GROUP BY,但我遇到了问题,因为我正在使用报表生成器并且必须在所有字段上使用 group by 子句而不仅仅是 OwnerID,这会出现每个人的最近休假日期 属性。请有人能让我走上正轨。非常感谢。

我所做的示例;

抱歉,我不在我的电脑上,无法提供准确的示例,如果有帮助,这里是一个简化版本。


table A

ownerid      propertyid      vacation
1            2               1991
2            5               1993
1            3               1992
1            4               1997
2            6               2000
2            9               2007

所以我想 select 每个拥有上次假期的 属性 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

我想你必须写一个子查询到

" to get each OwnerID with the latest vacation date" as bellow

    SELECT
rs.ownerid,
rs.propertyid,
rs.vacation
FROM
(
SELECT
ownerid,
propertyid,
vacation,
MAX(vacation) OVER(PARTITION BY ownerid) AS maxDate
FROM  TableA

 ) as rs  

  WHERE rs.vacation = rs.maxDate