在sqlsever中t_bd_material表其中如何根据FNUMBER分组去取每一组中的FAPPROVEDATE最大的那条数据
时间: 2024-10-23 13:10:32 浏览: 14
在SQL Server中,你可以使用`GROUP BY`和`MAX()`函数结合子查询或者窗口函数`ROW_NUMBER()`来获取每个FNUMBER下的最大FAPPROVEDATE。这里是一个基本的示例:
```sql
SELECT FNUMBER, MAX(FAPPROVEDATE) as LatestApprovedDate
FROM t_bd_material
GROUP BY FNUMBER
ORDER BY FNUMBER;
```
这将返回每个FNUMBER对应的最大FAPPROVEDATE。如果你想只取每个FNUMBER中FAPPROVEDATE最大的那一条记录,可以考虑使用窗口函数,如下所示:
```sql
WITH CTE AS (
SELECT FNUMBER, FAPPROVEDATE,
ROW_NUMBER() OVER (PARTITION BY FNUMBER ORDER BY FAPPROVEDATE DESC) as RN
FROM t_bd_material
)
SELECT FNUMBER, FAPPROVEDATE
FROM CTE
WHERE RN = 1;
```
这个查询首先按FNUMBER分区并按FAPPROVEDATE降序排序,然后在每个分区中选择行号为1的数据,即FAPPROVEDATE最大的记录。
阅读全文