powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не выкупаю, нужна помощь с запросом
5 сообщений из 5, страница 1 из 1
Не выкупаю, нужна помощь с запросом
    #39748711
Максимов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Много уважаемые форумчане, нужна помощь новичку в этом деле!
Есть две таблицы: tabl1 [data, sum_rub] и tabl2:[data,rate_usd]
Какой будет sql запрос, что бы переводил сумму транзакций в usd (sum_rub) с учетом того, что в таблице tabl2 данные только за рабочие дни. В tabl1 дата транзакции совершена в выходной день. Транзакции(sum_rub), совершенные в выходные, пересчитываются по курсу последнего рабочего дня перед выходным. Нужно: сумма операций в usd.


Не понимаю как сделать что бы data из tabl1 ссылалась на data из tabl2, что бы из поля rate_usd выбрать значения последнего рабочего дня и поделить sum_rub.
Нужно ли использовать DATEPART, и как вообще будет выглядеть код?
Или нужно добавить в tabl2 записи для выходных дней, но как это сделать?
...
Рейтинг: 0 / 0
Не выкупаю, нужна помощь с запросом
    #39748716
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максимов,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select tabl1.data, tabl1.sum_rub*tabl2.rate_usd, 
from tabl1
	outer apply (
		select top 1 tabl2.rate_usd
		from tabl2
		where tabl2.data < tabl1.data
		order by tabl2.data desc
		) tabl2
...
Рейтинг: 0 / 0
Не выкупаю, нужна помощь с запросом
    #39748717
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
Код: sql
1.
where tabl2.data < tabl1.data

Ой, конечно, tabl2.data <= tabl1.data
...
Рейтинг: 0 / 0
Не выкупаю, нужна помощь с запросом
    #39748748
Максимов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg,
Вау! супер, все работает, только надо было поделить(tabl1.sum_rub/tabl2.rate_usd), но не суть. Благодарю Вас.
Пытался проделать это же с помощью JOIN но получилось что tabl1.sum_rub перемножается с каждой строкой tabl2.rate_usd...(
...
Рейтинг: 0 / 0
Не выкупаю, нужна помощь с запросом
    #39748846
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МаксимовПытался проделать это же с помощью JOIN но получилось что tabl1.sum_rub перемножается с каждой строкой tabl2.rate_usd...(Перемножается - это потому, что вы не связали строки по дате. А связать их сложно, потому что нужно связывать "с последней существующей до указанной", сделать же это для простого JOIN сложно, разве что написать несколько JOIN, что будет неоптимально.

Или можно сделать JOIN, пронумеровать записи, и выбрать первые, но так будет более громоздко, и может быть не так оптимально.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select data, sum_usd
from(
	select tabl1.data, tabl1.sum_rub/tabl2.rate_usd as sum_usd, ROW_NUMBER() over (partition by tabl1.data order by tabl2.data desc) as row_num
	from tabl1
		join tabl2
			on tabl2.data <= tabl1.data
) t 
where row_num = 1


Так что по сути я и сделал JOIN, только другой его вид (outer apply), который более гибкий.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не выкупаю, нужна помощь с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]