如何编写SQL Server查询以获取组

时间:2015-04-24 01:30:48

标签: sql-server

我的表格rsPhotos有4列:picIDhuntIDphotoD_hunt

photo列有许多不同的jpgs,huntID列与photo相对,但有许多不同的huntID

我只想为每个photo 一个 huntID

我已尝试使用群组的min功能,但在将文字与词汇混合时会出错。尝试TOP,对我不起作用。

有人可以解决这个问题吗?谢谢

样本数据

picID    huntID     photo       D_hunt  
-----------------------------------------
72096    20785   DSC_0605.jpg  2015-04-04  
72098    20785   DSC_0586.jpg  2015-04-04  
72100    20775   DSC_1555.jpg  2015-01-02  
72098    20745   DSC_5828.jpg  2014-12-15  
72096    20745   DSC_4632.jpg  2014-12-15

结果应该是这样的......

huntID       photo  
--------------------------
20785       DSC_0605.jpg  
20775       DSC_1555.jpg  
20745       DSC_5828.jpg

1 个答案:

答案 0 :(得分:1)

您可以使用窗口函数ROW_NUMBER

执行此操作
SELECT
    huntID,
    photo
FROM(
    SELECT *,
        RN = ROW_NUMBER() OVER(PARTITION BY huntID ORDER BY D_hunt DESC, picID DESC)
    FROM rsPhotos
)t
WHERE RN = 1
ORDER BY huntID DESC