Попытка объединения таблиц с использованием полей даты и времени - PullRequest
1 голос
/ 20 мая 2011

У меня есть запрос, который возвращает поле datetime и несколько других полей вместе с ним. Я хочу добавить поле из другой таблицы, которая также имеет поле даты и времени. Я не могу внутренне объединить эти две таблицы, так как поля даты и времени не связаны, поэтому вместо этого я хочу присоединиться к первой строке во второй таблице, которая появляется сразу после поля даты и времени в первой таблице. Вот нефункциональный псевдопросмотр того, к чему я пытаюсь пойти:

SELECT DISTINCT 
       TripID AS 'ID', 
       @CURRDATE = CurrDate, 
       @GROUPID = GroupID, 
       UserEmail AS 'User', 
       RouteID AS 'Route', 
       (SELECT TOP (1) PatternNum 
          FROM tblMOEHistory 
         WHERE (GroupID = @GROUPID) 
           AND (TimeStamp > @CURRDATE) 
      ORDER BY TimeStamp) AS 'Pattern' 
  FROM tblMobileTrips 
ORDER BY 'Time';

Я не уверен, есть ли способ сделать это, но я надеялся, что кто-нибудь сможет мне помочь.

Ответы [ 2 ]

2 голосов
/ 20 мая 2011

Используя CROSS APPLY, вы можете «параметризовать» вызов tblMOEHistory (который, как я полагаю, вы пытались использовать с @GROUPID и @CURRDATE на строку)

Что-то вроде:

SELECT DISTINCT
  M.TripID AS 'ID', 
  M.CurrDate, 
  M.GroupID, 
  M.UserEmail AS 'User', 
  M.RouteID AS 'Route',
  MH.PatternNum  AS 'Pattern' 
FROM
  tblMobileTrips M
  CROSS APPLY
  (SELECT TOP (1) PatternNum
    FROM tblMOEHistory  MH
    WHERE MH.GroupID = M.GroupID AND MH.TimeStamp > M.CurrDate
    ORDER BY TimeStamp
  ) MH
ORDER BY 'Time';
1 голос
/ 20 мая 2011

Вы действительно можете использовать соединение ... дать этому шанс:

SELECT DISTINCT a.TripID AS 'ID',  
     a.CurrDate,  
     a.GroupID,  
     a.UserEmail AS 'User',  
     a.RouteID AS Route',  
     b.PatternNum
from someTable a
join tblMOEHistory b on a.GroupID = b.GroupID
     and b.TimeStamp = (select MIN(TimeStamp) 
                        from tblMOEHistory 
                        where GroupID = a.GroupID 
                        and TimeStamp > a.CurrDate)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...