2013-11-13 9 views
2

У меня есть две таблицы, скажем А и В.дата SQL Query MAX и некоторые поля из другой таблицы

стола:

ID_Sender | Date  
________________________ 
    1  | 11-13-2013 
    1  | 11-12-2013 

    2  | 11-12-2013 
    2  | 11-11-2013 

    3  | 11-13-2013 
    4  | 11-11-2013 

Таблица: B

ID | Tags 
_______________________ 
1   | Company A 
2   | Company A 
3   | Company C 
4   | Company D 

таблица результатов :

Tags  | Date 
____________________________ 
Company A | 11-13-2013 
Company C | 11-13-2013 
Company D | 11-11-2013 

I ha ve уже опробовал это GROUP BY with MAX(DATE), но не удался, я сделал некоторые внутренние соединения и подзапросы, но не смог обработать результат.

Вот мой код до сих пор, и изображение для выхода прилагается.

SELECT E.Tags, D.[Date] FROM 
     (SELECT A.ID_Sender AS Sendah, MAX(A.[Date]) AS Datee 
     FROM tblA A 
     LEFT JOIN tblB B ON A.ID_Sender = B.ID 
     GROUP BY A.ID_Sender) C 
    INNER JOIN tblA D ON D.ID_Sender = C.Sendah AND D.[Date] = C.Datee 
    INNER JOIN tblB E ON E.ID = D.ID_Sender 

Любые предложения? Я уже вытаскиваю волосы! (возможно, вы, ребята, можете просто дать мне несколько концепций sql, которые могут быть полезны, ответ не так необходим, потому что я действительно очень хотел его решить самостоятельно))

Спасибо!

+0

Оп, я не могу добавить изображение еще она нуждается в некоторой репутации штуковине прежде чем я смогу это сделать – Codemunkeee

+0

У меня он хранится локально на компьютере, я думаю, что мне нужно загрузить его на другой сайт, прежде чем я смогу его использовать/ – Codemunkeee

+0

Ур ответ уже есть – Dhaval

ответ

5
SELECT Tags, MAX(Date) AS [Date] 
FROM dbo.B INNER JOIN dbo.A 
    ON B.ID = A.ID_Sender 
GROUP BY B.Tags 

Demo

Результат

Company A November, 13 2013 00:00:00+0000 
Company C November, 13 2013 00:00:00+0000 
Company D November, 11 2013 00:00:00+0000 
+3

вы дали мой ответ .. я писал то же самое запрос, но перед отправкой, когда я нажал на ответ загрузки. y наш ответ был там .. так упрекнул это – Dhaval

+0

, он говорит, Недопустимое имя объекта 'dbo.B'. – Codemunkeee

+0

@Codemunkeee: Это ваше имя таблицы (_ «У меня есть две таблицы, скажем A и B» _), 'dbo' - это схема. –

0

попробовать это, пожалуйста, дайте мне правильно, если я неправ. В таблице B Id = 2 есть компания B, я предполагаю, что если это правильно, то продолжайте этот код.

declare @table1 table(ID_Sender int, Dates varchar(20)) 
    insert into @table1 values 
    (1  , '11-13-2013'), 
    (1  , '11-12-2013'), 
    (2  ,'11-12-2013'), 
    (2  ,'11-11-2013'), 
    (3  ,'11-13-2013'), 
    (4  ,'11-11-2013') 

    declare @table2 table (id int, tags varchar(20)) 
    insert into @table2 values 
    (1   ,'Company A'), 
    (2   , 'Company B'), 
    (3   , 'Company C'), 
    (4   , 'Company D') 


;with cte as 
(
    select 
    t1.ID_Sender, t1.Dates, t2.tags 
    from @table1 t1 
    join 
    @table2 t2 on t1.ID_Sender = t2.id 
) 
select tags, MAX(dates) as dates from cte group by tags 
+0

Спасибо, брат! Я попробовал, но он возвратил слишком много строк – Codemunkeee

0

Изменения первого ваша схема с «Компания B» на ID в B таблице

Вот мой код:

Select B.Tags, max(A.Date) as 'Date' 
from A, B 
    where B.ID = A.ID_Sender 
    group by B.Tags 
Смежные вопросы