从详细信息表SQL Server中获取最小和最大日期

时间:2018-04-18 10:53:18

标签: sql sql-server

这是我在这里的第一个问题所以请保持温和。我有一个主人和详细信息表,代表旅行/游览(主要请求)和所述游览的行程。行程包含0到多个具有开始日期和结束日期的项目。我需要显示每次旅行的报告,显示主请求沿该请求的最小开始日期和同一请求的最大结束的数据。关键是requestID。到目前为止我有这个,但我找不到在同一个上下文中表达结束日期的方法:

select MainRequest.RequestID, UKINT, ReasonForTrip, TripNumber, Itinerary.[Start Date]
from MainRequest
    right join 
        (Select RequestID, Min(StartDate) As [Start Date]
         from Itinerary
         group by RequestID) Itinerary
     ON (MainRequest.RequestID = Itinerary.RequestID)

很抱歉,如果我发布的内容不正确。感谢

3 个答案:

答案 0 :(得分:2)

你通常会从"主表"左键加入表格中有可选数据,比如@jarlh说

试试这个

import StashChildren from './scenes/Stash/Children/Children';

答案 1 :(得分:0)

SELECT
  DISTINCT 
    m.RequestID, 
    m.UKINT, 
    m.ReasonForTrip, 
    m.TripNumber, 
    min(i.StartDate) over (partition by m.RequestID) [Start Date],
    max(i.EndDate) over (partition by m.RequestID) [End Date]
FROM
  MainRequest m
LEFT JOIN
  Itinerary i
ON 
  m.RequestID = i.RequestID

答案 2 :(得分:0)

感谢所有帮助人员,我不确定左右联合的事情,我去了W3C学校,右边加入的维恩似乎比左联盟更有意义。在这个例子中的正确连接返回正确的数据,但我总是热衷于学习,如果你们中的任何一个想要详细阐述Elmo关卡我全都耳朵!感谢Cool_Br33ze指针和jarlh编辑我的问题。我想我现在已经把这个缩进的东西搞了!答案就是我们的目标,但Cool_Br33ze是它的灵感来源。

Select 
MainRequest.RequestID, 
UKINT, 
ReasonForTrip, 
TripNumber, 
Itinerary.[Start Date], 
Itinerary.[End Date]  
from 
MainRequest 
right join 
(Select 
RequestID, 
Min(StartDate) As [Start Date], 
Max(EndDate) As [End Date] 
from 
Itinerary group by RequestID) 
Itinerary 
ON (MainRequest.RequestID = Itinerary.RequestID)