Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Актуальные курсы валют одним SELECT  [new]
KonstMV
Member

Откуда:
Сообщений: 21
Необходимо получить (используя один SELECT) актуальные курсы всех валют, записи по которым присутствуют в таблице CurrencyRates. Задали на собеседовании... Ответить, соответственно, не смог!

CREATE TABLE Currency
(ID int IDENTITY PRIMARY KEY,
Name nvarchar(10) NOT NULL)
GO
CREATE TABLE CurrencyRates
(ID int IDENTITY PRIMARY KEY,
Currency_ID int NOT NULL,
RateDate datetime,
Rate decimal(11,2))
GO
INSERT INTO Currency
(Name)
VALUES
('Рубль')
GO
INSERT INTO Currency
(Name)
VALUES
('Доллар')
GO
INSERT INTO Currency
(Name)
VALUES
('Евро')
GO
INSERT INTO CurrencyRates
(Currency_ID, RateDate, Rate)
VALUES
(1, '01.01.2019', 1)
GO
INSERT INTO CurrencyRates
(Currency_ID, RateDate, Rate)
VALUES
(2, '01.01.2019', 61.00)
GO
INSERT INTO CurrencyRates
(Currency_ID, RateDate, Rate)
VALUES
(2, '02.01.2019', 62.01)


Сообщение было отредактировано: 20 янв 19, 13:24
20 янв 19, 12:43    [21789575]     Ответить | Цитировать Сообщить модератору
 Re: Актуальные курсы валют одним SELECT  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
KonstMV,

Where RateDate <= getdate() + получение ТОПовой записи по каждой валюте любым из предложенных по ссылке методом.....
20 янв 19, 13:53    [21789614]     Ответить | Цитировать Сообщить модератору
 Re: Актуальные курсы валют одним SELECT  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30766
KonstMV
Необходимо получить (используя один SELECT) актуальные курсы всех валют, записи по которым присутствуют в таблице CurrencyRates.
Например:
select * 
from Currency c
	outer apply (
		select top 1 *
		from CurrencyRates r
		where r.Currency_ID = c.ID
		order by r.RateDate desc
	) r
where r.ID is not null
20 янв 19, 13:57    [21789621]     Ответить | Цитировать Сообщить модератору
 Re: Актуальные курсы валют одним SELECT  [new]
KonstMV
Member

Откуда:
Сообщений: 21
alexeyvg,

Без вложенных запросов... Один SELECT
20 янв 19, 15:02    [21789661]     Ответить | Цитировать Сообщить модератору
 Re: Актуальные курсы валют одним SELECT  [new]
KonstMV
Member

Откуда:
Сообщений: 21
Щукина Анна,

Спасибо!!!
Вопрос закрыт!

select top 1 with ties *
from CurrencyRates
order by row_number()
over(partition by Currency_ID
order by RateDate desc)
20 янв 19, 15:18    [21789670]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить