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 回答