Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 按2列获取分组,日期为最新_Sql_Sql Server_Sql Server 2012_Sql Server 2008 R2 - Fatal编程技术网

Sql 按2列获取分组,日期为最新

Sql 按2列获取分组,日期为最新,sql,sql-server,sql-server-2012,sql-server-2008-r2,Sql,Sql Server,Sql Server 2012,Sql Server 2008 R2,我有2个表,我正在获取记录,如下所示 查询如下: Select BMC.JCRS_Mem_crs_Code, BMC.JCRS_Mem_Description, BMC.JCRS_Mem_Date, BJCM.JCRS_Mast_Title From Bus_MemberCourse BMC Inner Join Bus_JourneymanCourseMaster BJCM On BMC.JCRS_Mem_crs_Co

我有2个表,我正在获取记录,如下所示

查询如下:

Select   BMC.JCRS_Mem_crs_Code,
         BMC.JCRS_Mem_Description,
         BMC.JCRS_Mem_Date,
         BJCM.JCRS_Mast_Title
From     Bus_MemberCourse BMC
Inner Join Bus_JourneymanCourseMaster BJCM
    On BMC.JCRS_Mem_crs_Code = BJCM.JCRS_Mast_Code
Where    BMC.JCRS_Mem_Completed = 1
         And BMC.JCRS_Mem_mem_ID = 5010
Group By BMC.JCRS_Mem_crs_Code,
         BMC.JCRS_Mem_Description,
         BMC.JCRS_Mem_Date,
         BJCM.JCRS_Mast_Title
但是我想要的是我需要在Jcrs_mem_crs_代码和Jcrs_mem_描述上创建group by,如果这两列数据是常见的,那么我只想从这多个日期中获取最新的日期。i、 e.我只想选择该行,而忽略其他行。

您只需要
MAX(date)


您根本不需要
分组依据
(您在查询中没有进行任何聚合)

这可以通过在这两列上使用
分区的
窗口函数来轻松完成,同时按日期排序:

;With Cte As
(
    Select   BMC.JCRS_Mem_crs_Code,
             BMC.JCRS_Mem_Description,
             BMC.JCRS_Mem_Date,
             BJCM.JCRS_Mast_Title,
             Row_Number() Over (Partition By BMC.JCRS_Mem_crs_Code,
                                             BMC.JCRS_Mem_Description
                                Order By     BMC.JCRS_Mem_Date Desc) As RN
    From     Bus_MemberCourse BMC
    Inner Join Bus_JourneymanCourseMaster BJCM
        On BMC.JCRS_Mem_crs_Code = BJCM.JCRS_Mast_Code
    Where    BMC.JCRS_Mem_Completed = 1
             And BMC.JCRS_Mem_mem_ID = 5010
)
Select  JCRS_Mem_crs_Code,
        JCRS_Mem_Description,
        JCRS_Mem_Date,
        JCRS_Mast_Title
From    Cte
Where   RN = 1

您使用的是
SQL Server 2012
还是
SQL Server 2008 R2
?选择一个。@Siyual此查询可以在这两种情况下运行,对吗?。谢谢你formatting@Xtremcool是的,但2012年引入了很多2008年没有的有用功能。该版本限制或扩展了可能的答案。@AaronDietz ok,很好
;With Cte As
(
    Select   BMC.JCRS_Mem_crs_Code,
             BMC.JCRS_Mem_Description,
             BMC.JCRS_Mem_Date,
             BJCM.JCRS_Mast_Title,
             Row_Number() Over (Partition By BMC.JCRS_Mem_crs_Code,
                                             BMC.JCRS_Mem_Description
                                Order By     BMC.JCRS_Mem_Date Desc) As RN
    From     Bus_MemberCourse BMC
    Inner Join Bus_JourneymanCourseMaster BJCM
        On BMC.JCRS_Mem_crs_Code = BJCM.JCRS_Mast_Code
    Where    BMC.JCRS_Mem_Completed = 1
             And BMC.JCRS_Mem_mem_ID = 5010
)
Select  JCRS_Mem_crs_Code,
        JCRS_Mem_Description,
        JCRS_Mem_Date,
        JCRS_Mast_Title
From    Cte
Where   RN = 1