Как привнести самую последнюю ценность? - PullRequest
0 голосов
/ 21 октября 2019

Мне нужно знать мои организационные сектора. Но мой код содержит все коды, которые были у организации с момента ее вставки в систему и группировки по ее тегу.

Самый точный запрос, который у меня есть, - это группировка обновлений по MAX, но я неЯ не хочу, чтобы все реестры ... только самые последние.

Ожидаемый результат: мне нужно только самое последнее значение (B.Code), отбрасывая все остальные старые значения B.Code

SELECT A.organisation_ref, A.name, A.block_level, B.code_type, B.code , MAX(B.update_timestamp)
FROM [TB1].[DBO].[ORG] AS A
INNER JOIN [TB2].[DBO].[CODE] AS B
ON A.organisation_ref = B.organisation_ref AND B.CountryID = '76'
WHERE B.code_type = '1005'
GROUP BY A.organisation_ref, A.name, A.block_level, B.code_type, B.code
ORDER BY A.organisation_ref ASC

Результат пока:

organisation_ref    organisation_name   block_level code_type   code    update_timestamp
1   contoso A   7   1005    IAC 2008-05-12 19:27:41.567
1   contoso A   7   1005    IAE 2015-03-30 20:51:20.693
1   contoso A   7   1005    IN  NULL
1   contoso A   7   1005    INE 2014-11-19 09:51:00.417
1   contoso A   7   1005    IQQ 2015-08-05 17:22:28.763
4   contoso B   0   1005    CUU 2011-10-25 11:34:58.420
4   contoso B   0   1005    DAB 2012-05-02 17:15:38.667
4   contoso B   0   1005    LLH 2015-10-08 08:25:43.260

1 Ответ

1 голос
/ 21 октября 2019

Вы можете использовать apply:

SELECT o.organisation_ref, o.name, o.block_level, c.code_type, c.code 
FROM [TB1].[DBO].[ORG] o CROSS APPLY
     (SELECT TOP (1) c.*
      FROM [TB2].[DBO].[CODE] c
      WHERE c.organisation_ref = o.organisation_ref AND
            c.CountryID = '76' AND
            c.code_type = '1005'
      ORDER BY c.update_timestamp DESC
     ) c
ORDER BY o.organisation_ref ASC;

Обратите внимание, что я исправил псевдонимы таблиц, чтобы они представляли собой значимые сокращения для таблиц, а не бессмысленные произвольные буквы.

Также, еслиCountryID и code_type - строки, тогда сравнение со строками в порядке. В противном случае отбросьте одинарные кавычки, чтобы числа сравнивались с числами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...