我需要显示不同的行,实际上应该根据日期字段为每年获取 1 个最新行。
我尝试使用 CTE 解决此问题,但在进一步测试时它无法正常工作,因为它只会获得基于 ROWNumber 的 ROW,如果我们使用过滤器,那么它不会获得所需的结果。
所以我想从表中获取 AlbumID、AlbumName、AlbumDate 和 AlbumYear_YYYY 并将其传递给数据集,然后使用 LINQ 再次使用此数据集来进一步获取基于年度最新专辑的唯一行
假设我的表有以下行
专辑 ID、专辑名称、专辑日期、专辑图标
我的 MS-SQL 查询
string sql= "SELECT AlbumID, AlbumName, AlbumIcon, AlbumDate, DATEPART(YYYY, AlbumDate) AS Year FROM PhotoAlbumName "
DataSet ds = DataProvider.Connect_Select(strSql);
DataView dv = ds.Tables[0].DefaultView;
//DO LINQ HERE 并将 linq 的值传递给 Pager 控件
PagerControl1.BindDataWithPaging(rptAlbumsCategories, dv.Table);
我不确定如何执行此操作,但如果它有效,那么它将消除由于以下 sql 查询而发生的不需要的结果。
;WITH DistinctYEAR AS
(
SELECT AlbumID, AlbumIcon, AlbumDate, AlbumVisible,AlbumName,
ROW_NUMBER() OVER(PARTITION BY DATEPART(YYYY,AlbumDate) ORDER BY AlbumDate) AS 'RowNum'
FROM PhotoAlbumName
)
SELECT * FROM DistinctYEAR WHERE RowNum = 1 AND AlbumVisible = 1 ORDER BY AlbumDate DESC
更新: