Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我希望在SQL Server中的表中保留最新日期_Sql_Sql Server_Tsql_Sql Order By_Window Functions - Fatal编程技术网

我希望在SQL Server中的表中保留最新日期

我希望在SQL Server中的表中保留最新日期,sql,sql-server,tsql,sql-order-by,window-functions,Sql,Sql Server,Tsql,Sql Order By,Window Functions,这是我的桌子 这是我想要得到的输出: 试试这个: select so.nombre + ' ' + so.apellidos as nombre_completo, se.actividad, ss.fecha as fecha from Soldado so, Servicio se, ServicioSoldado ss where ss.soldadoID = so.soldadoID and ss.servicioID = se.servicioID

这是我的桌子

这是我想要得到的输出:

试试这个:

select so.nombre + ' ' + so.apellidos as nombre_completo, 
       se.actividad, 
       ss.fecha as fecha
from  Soldado so, Servicio se, ServicioSoldado ss
where ss.soldadoID = so.soldadoID and ss.servicioID = se.servicioID
group by so.nombre, so.apellidos, se.actividad, ss.fecha, so.soldadoID 
order by so.soldadoID, ss.fecha desc

其思想是为每个用户创建一组订单记录,并仅为每个用户获取第一个(最新的)记录。

请查看
row_number()
-在ANSI-92 SQL标准中(超过25年前),旧式的逗号分隔表列表样式被正确的ANSI
JOIN
语法所取代而且不鼓励使用它
WITH DataSource AS
(
    select so.nombre + ' ' + so.apellidos as nombre_completo, 
           se.actividad, 
           ss.fecha as fecha,
           ROW_NUMBER() OVER (PARTITION BY so.soldadoID  ORDER BY ss.fecha desc) AS [RowID]
    from  Soldado so
    INNER JOIN Servicio se
        ON so.soldadoID = ss.soldadoID 
    INNER JOIN ServicioSoldado ss
        ON ss.servicioID = se.servicioID
)
SELECT *
FROM DataSource
WHERE [RowID] = 1;