SQL内部联接与max函数不同
我有tbMeasurement和tbPatientMeasurement表 t测量SQL内部联接与max函数不同,sql,sql-server-2005,Sql,Sql Server 2005,我有tbMeasurement和tbPatientMeasurement表 t测量 MeasurementIDP MeasurementName PatientMeasurementIDP MeasurementIDF MeasurementValue Taken (Datetime) tbPatientMeasurement MeasurementIDP MeasurementName PatientMeasurementIDP MeasurementIDF MeasurementVal
MeasurementIDP
MeasurementName
PatientMeasurementIDP
MeasurementIDF
MeasurementValue
Taken (Datetime)
tbPatientMeasurement
MeasurementIDP
MeasurementName
PatientMeasurementIDP
MeasurementIDF
MeasurementValue
Taken (Datetime)
执行以下查询时:
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
这将返回其中一个MeasurementName的双条目。
而且我还想要MeasurementName,MeasurementValue,通过max take(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
欢迎来到StackOverflow。请正确标记您的问题,您使用的是哪种RDBMS、SQL Server、MySQL、Oracle还是其他?这样,您将获得更多的可见性和获得答案的机会。您被要求指定SQL server类型-解决方案取决于此。我正在使用SQL server 2005和新的SQL server,因此我不知道SQL server类型。