оставьте соединение и получите максимальное значение даты и времени - PullRequest
0 голосов
/ 10 июня 2019

У меня есть две таблицы,

Таблица 1

        Id     Name
        ===========
        1      Name1
        2      Name2
        3      Name3

Таблица 2

        Id     Tb1Id   DateTime
        =======================
        1       1      20-09-2017
        2       1      01-09-2018
        3       2      01-09-2016
        4       2      02-09-2015 
        5       3      06-09-2016 
        6       3      10-09-2019

Я хочуобъединить эти две таблицы, где Table1.Id = Table2.Tb1Id и получить максимальное значение даты и времени из таблицы 2.Результат должен быть таким.

        Id     Name     DateTime
        ========================
        1      Name1    01-09-2018
        2      Name2    01-09-2016
        3      Name3    10-09-2019

1 Ответ

2 голосов
/ 10 июня 2019

Попробуйте

DECLARE @Table1 AS TABLE(Id INT,Name VARCHAR(20))
INSERT INTO @Table1
SELECT 1,'Name1' UNION ALL
SELECT 2,'Name2' UNION ALL
SELECT 3,'Name3' 

DECLARE @Table2 AS TABLE(Id INT, Tb1Id INT,[DateTime] DATETIME)
INSERT INTO @Table2       
SELECT 1,1,'2017-09-20' UNION ALL
SELECT 2,1,'2018-09-01' UNION ALL
SELECT 3,2,'2016-09-01' UNION ALL
SELECT 4,2,'2015-09-02' UNION ALL 
SELECT 5,3,'2016-09-06' UNION ALL 
SELECT 6,3,'2019-09-10' 

SELECT     t2.Tb1Id AS Id,
           t1.Name,
           MAX(t2.[DateTime]) AS [DateTime]
FROM @Table1 AS T1
INNER JOIN @Table2 AS t2
 ON T1.Id = t2.Tb1Id
GROUP BY 
     t2.Tb1Id,
     t1.Name

Результат

Id  Name        DateTime
-----------------------------------
1   Name1   2018-09-01 00:00:00.000
2   Name2   2016-09-01 00:00:00.000
3   Name3   2019-09-10 00:00:00.000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...