1

列の最新の日付が存在する場合はそれを照会する次のユニオンクエリがあります。

SELECT TOP 1 m.sentdate AS 'calltreelastsignedoff' 
FROM Incidents i 
INNER JOIN Plans p ON i.planuid = p.uid 
INNER JOIN IncidentMessages im ON i.uid = im.incidentuid 
INNER JOIN Messages m ON im.messageuid = m.uid 
WHERE p.uid = '031E3346-2921-426E-9494-1111111111' 
UNION
SELECT TOP 1 m.sentdate AS 'calltreelastsignedoff' 
FROM Incidents i
INNER JOIN PlanExercises pe ON i.planexerciseuid = pe.uid
INNER JOIN IncidentMessages im ON i.uid = im.incidentuid 
INNER JOIN Messages m ON im.messageuid = m.uid 
WHERE pe.planuid = '031E3346-2921-426E-9494-1111111111' 

各クエリが上位1つの結果を返す場合、これは2つの値を返します。

私が本当に欲しいのは、結合されたクエリのトップ1を選択することです。

結合されたクエリで選択を実行するにはどうすればよいですか?

4

1 に答える 1

3

これを試して:

派生テーブルでこれを行うことができます

select top 1 from
(   
  SELECT TOP 1 m.sentdate AS 'calltreelastsignedoff' 
  FROM Incidents i 
  INNER JOIN Plans p ON i.planuid = p.uid 
  INNER JOIN IncidentMessages im ON i.uid = im.incidentuid 
  INNER JOIN Messages m ON im.messageuid = m.uid 
  WHERE p.uid = '031E3346-2921-426E-9494-1111111111' 

  UNION

  SELECT TOP 1 m.sentdate AS 'calltreelastsignedoff' 
  FROM Incidents i
  INNER JOIN PlanExercises pe ON i.planexerciseuid = pe.uid
  INNER JOIN IncidentMessages im ON i.uid = im.incidentuid 
  INNER JOIN Messages m ON im.messageuid = m.uid 
  WHERE pe.planuid = '031E3346-2921-426E-9494-1111111111' 
)a
order by <col>
于 2012-09-03T10:10:56.227 に答える