Время прочтения: 2 мин.

При работе с базами данных довольно часто возникает ситуация, когда нужно найти операции свыше определённой суммы в рублевом эквиваленте.  Но что делать, если в базе данных нет поля с конвертацией валют и драгоценных металлов в рублевый эквивалент?

Легко и непринужденно сделать конвертацию самостоятельно, в окне запроса.

Предположим, есть таблица TableName с полями «Valuta», «Summa_operacii» и «Data_operacii», в которой нужно выбрать операции свыше 10 тыс. рублей по разным валютам.

Запрос на поиск операций больше 10 тыс.рублей по разным валютам и драгоценным металлам будет выглядеть так:

— 1 вариант

SELECT Valuta, Summa_operacii, Data_operacii
FROM TableName
Where 
ABS (CASE 
WHEN Valuta = 810 THEN Summa_operacii 		-- рубли
WHEN Valuta = 978 THEN Summa_operacii * 70 	-- евро
WHEN Valuta = 840 THEN Summa_operacii * 64.2 	-- доллар
WHEN Valuta = 33  THEN Summa_operacii * 3714 	-- палладий
WHEN Valuta = 98  THEN Summa_operacii * 3104 	-- золото
WHEN Valuta = 76  THEN Summa_operacii * 1892 	-- платина
WHEN Valuta = 99  THEN Summa_operacii * 36 	-- серебро
END) > 10000 		–- условие суммы операции более 10 тыс. рублей

— 2 вариант

SELECT Valuta, Summa_operacii, Data_operacii
FROM TableName
Where 
(
 		(Summa_operacii > 10000 AND Valuta = 810) –- рубли
OR 	(Summa_operacii > 140   AND Valuta = 978) -- евро	
OR 	(Summa_operacii > 160   AND Valuta = 840) -- доллар 
OR 	(Summa_operacii > 3     AND Valuta = 33)	-- палладий	
OR 	(Summa_operacii > 3     AND Valuta = 98)	-- золото
OR 	(Summa_operacii > 6     AND Valuta = 76)	-- платина	
OR 	(Summa_operacii > 330   AND Valuta = 99)	-- серебро
)	

Список видов валют и драгоценных металлов можно легко расширить, добавив код валюты/ драгоценного металла и их курс к рублю.