-1

テーブル tbMeasurement と tbPatientMeasurement があります。

tb測定

MeasurementIDP
MeasurementName

tbPatientMeasurement

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 の 1 つの二重エントリを返します。そして私も欲しいMeasurementName,MeasurementValue by max Taken(datetime).

4

2 に答える 2

5

これを試してみてください -

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
于 2013-05-28T07:10:16.850 に答える
3
SELECT  
      m.MeasurementName
    , p.MeasurementValue
    , a.Taken 
FROM dbo.tbMeasurement m
INNER JOIN dbo.tbPatientMeasurement p ON m.MeasurementIDP = p.MeasurementIDF
INNER JOIN
(
select MeasurementIDF,MAX(Taken) as taken 
from tbPatientMeasurement
group by MeasurementIDF
) a on a.MeasurementIDF=p.MeasurementIDF and a.taken=p.Taken
于 2013-05-28T10:31:33.100 に答える