Jer*_*ins 1 sql t-sql sql-server-2005
请原谅我可能是一个糟糕的头衔; 我努力用一行文字来解释我想要做的事情.
SQL Server 2005
我有一个名为ItemDataSheets的表,如下所示:
Id ItemId FilePath FileDescription FileType ------------------------------------------------------------------ 1 JOD141 /files/JOD141_a.pdf DataSheet ABC 1 2 JOD141 /files/JOD141_b.pdf DataSheet LMN 1 3 JOD141 /files/JOD141_c.pdf DataSheet XYZ 2 4 JOD141 /files/JOD141_d.pdf DataSheet POI 3 5 JOD141 /files/JOD141_e.pdf DataSheet QWE 3
对于给定的ItemId,我需要为它拥有的每个FileType返回1行.如果它有一个以上的某种文件类型,那么我需要该FileType具有最高Id的行.
所以对于ItemId JOD141,我想回来:
Id ItemId FilePath FileDescription FileType ------------------------------------------------------------------ 2 JOD141 /files/JOD141_b.pdf DataSheet LMN 1 3 JOD141 /files/JOD141_c.pdf DataSheet XYZ 2 5 JOD141 /files/JOD141_e.pdf DataSheet QWE 3
SELECT *
FROM
ItemDataSheets i
INNER JOIN (SEELECT max(id) id,
fileType
from ItemDataSheets
GROUP BY
fileType ) maxdID
on i.filetype = maxid.filetype
and i.id = mqaxid.id
Run Code Online (Sandbox Code Playgroud)
要么
SELECT
*
FROM (SELECT
*,
ROW_NUMBER() OVER(partition BY fileType ORDER BY id DESC) AS RankValue
FROM ItemDataSheets
) i
WHERE RankValue=1
Run Code Online (Sandbox Code Playgroud)