按相同名称和最大数量获取DISTINCT行

时间:2017-01-02 23:00:18

标签: sql sql-server

我试图更多地思考如何做到这一点并进行搜索,但没有解决方案符合需要。 下面是根据图形名称动态绘制图形名称的表格,每个图形在“位置”列中插入为“已提交”并更新为“已拒绝”并插入与“使用新修订版提交”相同的数据,如此图像所示 enter image description here

我需要的是一个SQL查询,它区分具有相同图纸名称且具有此图纸名称的最大版本号的行。

如图所示,图形名称1的最大修订版号为1,这不是静态的,图纸名称2的最大版本号为2

任何想法我怎么能这样做,抱歉我在SQL查询中不太好

4 个答案:

答案 0 :(得分:1)

您需要按图纸名称分组并选择修订的最大值,如下所示:

SELECT drawingname, MAX(revision)
FROM table
GROUP BY drawingname

答案 1 :(得分:1)

SELECT T1.*
FROM table T1
JOIN (
  SELECT drawingname, MAX(revision) maxrevision
FROM table
GROUP BY drawingname
) T2
ON T1.drawingname= T2.drawingname and T1.revision = T2.maxrevision

答案 2 :(得分:1)

使用ROW_NUMBER窗口功能

Select Top 1 with Ties *
From yourtable
Order by Row_number() Over(Partition by drawingname Order by revision desc)

答案 3 :(得分:0)

select * from (
     select *,row_numver()over(partition by drawingname order by revision desc ) as rn from table1
) as t where rn=1