使用max时如何选择整行?

swo*_*978 3 sql sql-server sql-server-2005

我有一个包含以下列的表:

SignatureID
PatientID
PatientVisitID
TreatAuthDate
HIPAADate
DrugTestDate
Run Code Online (Sandbox Code Playgroud)

现在我有以下Select语句:

SELECT *
FROM tblSignature
WHERE PatientID = 12345
Run Code Online (Sandbox Code Playgroud)

此select语句返回8行.我需要完成的是获得MAX TreatAuthDate - 并且使用MAX TreatAuthDate我需要PatientVisitID.然后我需要HipaaDate和DrugTestDate的相同类型的信息.我怎样才能做到这一点?

Qua*_*noi 10

SELECT  TOP 1 *
FROM    tblSignature 
WHERE   PatientID = 12345
ORDER BY
        TreatAuthDate DESC
Run Code Online (Sandbox Code Playgroud)

要获得"last"的不同定义的最后三个结果,请使用:

SELECT  *
FROM    (
        SELECT  TOP 1 'LastThreatAuth' AS which, ts.*
        FROM    tblSignature ts
        WHERE   PatientID = 12345
        ORDER BY
                TreatAuthDate DESC
        ) SrcTreatAuth 
UNION ALL
SELECT  *
FROM    (
        SELECT  TOP 1 'LastHIPAA' AS which, ts.*
        FROM    tblSignature ts
        WHERE   PatientID = 12345
        ORDER BY
                HIPAADate DESC
        ) SrcHIPAA
UNION ALL
SELECT  *
FROM    (
        SELECT  TOP 1 'LastDrugTest' AS which, ts.*
        FROM    tblSignature ts
        WHERE   PatientID = 12345
        ORDER BY
                DrugTestDate DESC
        ) SrcDrugTest
Run Code Online (Sandbox Code Playgroud)