Vij*_*jay -1 sql sql-server-2005
我有表tbMeasurement和tbPatientMeasurement.
tbMeasurement
MeasurementIDP
MeasurementName
Run Code Online (Sandbox Code Playgroud)
tbPatientMeasurement
PatientMeasurementIDP
MeasurementIDF
MeasurementValue
Taken (Datetime)
Run Code Online (Sandbox Code Playgroud)
执行以下查询时:
SELECT DISTINCT dbo.tbMeasurement.MeasurementName
, dbo.tbPatientMeasurement.MeasurementValue
, dbo.tbPatientMeasurement.Taken
FROM dbo.tbMeasurement
INNER JOIN dbo.tbPatientMeasurement
ON dbo.tbMeasurement.MeasurementIDP = dbo.tbPatientMeasurement.MeasurementIDF
Run Code Online (Sandbox Code Playgroud)
这将返回其中一个MeasurementName的双重条目.我也想要MeasurementName,MeasurementValue by max Taken(datetime).
试试这个 -
SELECT DISTINCT
m.MeasurementName
, p2.MeasurementValue
, p2.Taken
FROM dbo.tbMeasurement m
JOIN (
SELECT
p.MeasurementValue
, Taken = MAX(p.Taken)
FROM dbo.tbPatientMeasurement p
GROUP BY m.MeasurementName, p.MeasurementValue
) p2 ON m.MeasurementIDP = p2.MeasurementIDF
Run Code Online (Sandbox Code Playgroud)