2015-08-24 117 views
0

[![输入图像描述] [1]] [1]我需要以下查询的帮助。SQL查询帮助(ObjectPropertyvalue)

select * 
from xr.ObjectPropertyvalue 
where objectid in (
    select objectid 
    from xr.objectpropertyvalue 
    where endversion in 
      (select max(endversion) 
       from xr.ObjectPropertyValue 
       group by objectid having count(endversion) > 1 
    ) 
) 

我想要做的是在表上找到最高版本和objectid唯一的条目。

Ex. 
    Object id 1's highest version = 3 
    Object id 2 highest version =4 

任何帮助,将不胜感激。

+1

请出示一些简单的数据和预期输出。另外,你使用的是MySQL还是sql-server? – EricZ

+0

@EricZ表由相同对象ID的多个条目组成,但不同的最终版本只是为每个不同的objectid获得最高版本的结果。我正在使用sql-server。 –

回答

0

如果我理解正确的话,您可以尝试此查询(未测试,我没有现在的SQL服务器环境)

WITH cte AS (
    SELECT *, rn = ROW_NUMBER() OVER(PARTITION BY objectid ORDER BY endversion DESC) 
    FROM xr.ObjectPropertyvalue 
) 
SELECT * 
FROM cte c 
WHERE c.rn = 1 
AND EXISTS (SELECT 1 FROM cte c2 WHERE c2.objectid = c.objectid AND c2.rn = 2) 
ORDER BY c.objectid