У меня есть две таблицы, которыми я сейчас пользуюсь:
СТРАНЫ
ID Name ShortName
1 France FR
2 United Kingdom UK
3 United States Of America USA
4 Argentina AG
5 Portugal PO
6 Spain SP
7 Italy IT
JOBDATA
JobID CountryID TotalPercentage Indicator TimeStamp
500 1 78.9 NEW 10-06-2018
501 1 93.2 NEW 11-06-2018
509 1 91.11 NEW 02-07-2018
508 2 72.5 NEW 02-07-2018
502 2 88.57 NEW 12-06-2018
503 4 46.67 NEW 12-06-2018
506 4 91.43 NEW 29-06-2018
507 2 53.33 NEW 01-07-2018
504 1 50 NEW 14-06-2018
505 4 44.4 NEW 15-06-2018
501 1 0 OLD 11-06-2018
506 4 40 OLD 29-06-2018
508 2 78 OLD 02-07-2018
Я написал приведенный ниже запрос, чтобы вернуть мои данные следующим образом, т. Е. Только для отображения значений последних идентификаторов заданий для данной страны:
Select (Select Name from Country where ID = T1.CountryID) as CountryName ,
(Select ShortName from Country where ID = T1.CountryID) as CountryShortName ,
Coalesce(Round(T1.TotalPercentage,2),0) As TrueCount ,
(Case
When Coalesce(Round(T1.TotalPercentage,2),0) = 0
Then Coalesce(Round(T1.TotalPercentage,2),0)
Else 100-Coalesce(Round(T1.TotalPercentage,2),0)
End) As Falsecount
FROM JobData T1 LEFT OUTER JOIN JobData T2
ON (T1.CountryId = T2.CountryId AND T1.JobId < T2.JobId)
WHERE T2.CountryId IS NULL AND Indicator = 'NEW';
1010 *
*
CountryName CountryShortName TrueCount FalseCount
France FR 91.11 8.89
United Kingdom UK 72.5 27.5
Argentina AG 91.43 8.57
Я понимаю, что правильно получаю вышеуказанный результат, но есть ли лучший подход и более быстрый способ получить желаемый результат?
Заранее спасибо.