Tsql 选择日期和时间列的最后一条记录

Tsql 选择日期和时间列的最后一条记录,tsql,select,where,exists,Tsql,Select,Where,Exists,我需要选择学术表中的最后一条记录,该表有两列日期和时间。当我运行查询时,我得到一个错误。当子查询未引入EXISTS时,只能在选择列表中指定一个表达式 USE PCUnitTest SELECT C.ACCOUNTNO, C.CONTACT, C.LASTNAME, C.KEY4, A.PEOPLE_ID, A.APP_STATUS, A.APP_DECISION, A.REVISION_DATE, A.REVISION_TIME FROM ACADEMIC A

我需要选择学术表中的最后一条记录,该表有两列日期和时间。当我运行查询时,我得到一个错误。当子查询未引入EXISTS时,只能在选择列表中指定一个表达式

USE PCUnitTest
SELECT        C.ACCOUNTNO, C.CONTACT, C.LASTNAME, C.KEY4, A.PEOPLE_ID, A.APP_STATUS, A.APP_DECISION, A.REVISION_DATE, A.REVISION_TIME
FROM            ACADEMIC AS A INNER JOIN
                         GM.dbo.CONTACT1 AS C ON A.PEOPLE_ID = C.KEY4
WHERE A.REVISION_DATE = (SELECT     TOP (1) REVISION_DATE, REVISION_TIME, PEOPLE_CODE, PEOPLE_ID, PEOPLE_CODE_ID, ACADEMIC_YEAR, ACADEMIC_TERM, ACADEMIC_SESSION, PROGRAM, DEGREE, CURRICULUM
FROM         PCUnitTest.dbo.ACADEMIC
ORDER BY REVISION_DATE DESC, REVISION_TIME DESC)
使用行号

USE PCUnitTest

SELECT
 R.ACCOUNTNO, R.CONTACT, R.LASTNAME, R.KEY4, R.PEOPLE_ID, R.APP_STATUS, R.APP_DECISION, R.REVISION_DATE, R.REVISION_TIME
FROM
(
SELECT        C.ACCOUNTNO, C.CONTACT, C.LASTNAME, C.KEY4, A.PEOPLE_ID, A.APP_STATUS, A.APP_DECISION, A.REVISION_DATE, A.REVISION_TIME
    ,ROW_NUMBER() OVER (ORDER BY A.REVISION_DATE DESC, A.REVISION_TIME DESC) RN
FROM            ACADEMIC AS A INNER JOIN
                         GMUnitTest.dbo.CONTACT1 AS C ON A.PEOPLE_ID = C.KEY4
) R
WHERE RN=1
如果要获取每个人的最新行,请按添加分区

SELECT
 R.ACCOUNTNO, R.CONTACT, R.LASTNAME, R.KEY4, R.PEOPLE_ID, R.APP_STATUS, R.APP_DECISION, R.REVISION_DATE, R.REVISION_TIME
FROM
(
SELECT        C.ACCOUNTNO, C.CONTACT, C.LASTNAME, C.KEY4, A.PEOPLE_ID, A.APP_STATUS, A.APP_DECISION, A.REVISION_DATE, A.REVISION_TIME
    ,ROW_NUMBER() OVER (PARTITION BY A.PEOPLE_ID ORDER BY A.REVISION_DATE DESC, A.REVISION_TIME DESC) RN
FROM            ACADEMIC AS A INNER JOIN
                         GMUnitTest.dbo.CONTACT1 AS C ON A.PEOPLE_ID = C.KEY4
) R
WHERE RN=1

您可以在where中加入正在使用的查询

USE PowerCampusUnitTest
SELECT C.ACCOUNTNO, C.CONTACT, C.LASTNAME, C.KEY4, A.PEOPLE_ID, A.APP_STATUS, A.APP_DECISION, A.REVISION_DATE, A.REVISION_TIME
FROM ACADEMIC AS A 
INNER JOIN GoldMineUnitTest.dbo.CONTACT1 AS C 
ON A.PEOPLE_ID = C.KEY4
INNER JOIN (
SELECT TOP 1 A2.REVISION_DATE,A2.REVISION_TIME FROM PowerCampusUnitTest.dbo.ACADEMIC A2
ORDER BY REVISION_DATE DESC, REVISION_TIME DESC
)AS A2 
ON A.REVISION_DATE = A2.REVISION_DATE AND A.REVISION_TIME = A2.REVISION_TIME

选择前1个修订日期、修订时间,。。。选择要分配给.REVISION\u日期的多个列。这对你有意义吗?是的,但是时间和日期在不同的列中,时间取决于日期。是日期=某物,时间=某物吗?学术表有7个键,我需要选择最后一条记录,并按修订日期、修订时间更新人员ID的状态列。该学术表有7个关键字PEOPLE\u CODE\u ID、学年、学期、学术会议、课程、学位、课程谢谢,是的,如果我只有一个修订日期列,则查询完成,但时间取决于日期,我是否可以添加另一个和何处修订时间子查询。然后我有,其中A.REVISION\u DATE=从PowerCampusUnitTest.dbo.中选择前1个修订日期,按修订日期描述、修订时间描述和A.REVISION\u时间=从PowerCampusUnitTest.dbo.中选择前1个修订时间,按修订日期描述,我将用一些数据测试它,看看它是否返回正确的行。