Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не могу составить запрос. помогите новичку в SQL / 3 сообщений из 3, страница 1 из 1
27.07.2021, 14:56
    #40086480
alexandrDr87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу составить запрос. помогите новичку в SQL
Есть следующие данные:

@Table1 - клиенты
Id_Client - идентификатор клиента, Value - размер кредита

Table2 - покупки
Id_Client - идентификатор клиента, DocDate - дата покупки, Amount - сумма покупки , Caption - наименование покупки

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
DECLARE @Table1 table (Id_Client int, Value money)
INSERT INTO @Table1 (Id_Client, Value)
SELECT 1, 24
UNION SELECT 2, 13
UNION SELECT 3, 2
UNION SELECT 4, 5

DECLARE @Table2 table (Id_Client int, DocDate datetime, Amount money, Caption varchar(6))
INSERT INTO @Table2 (Id_Client, Amount, DocDate, Caption)
 
SELECT 1, 5, '20051024', 'qh'
UNION SELECT 1, 9,  '20051019', 'wj'
UNION SELECT 1, 3,  '20051022', 'ek'
UNION SELECT 1, 8,  '20051004', 'rl'
UNION SELECT 1, 6,  '20051018', 'tz'
UNION SELECT 1, 5,  '20050929', 'yx'
UNION SELECT 2, 11, '20051023', 'uc'
UNION SELECT 2, 6,  '20051021', 'iv'
UNION SELECT 2, 45, '20051018', 'ob'
UNION SELECT 3, 4,  '20051030', 'pn'
UNION SELECT 3, 2,  '20051028', 'am'
UNION SELECT 4, 4,  '20051021', 'sq'
UNION SELECT 4, 6,  '20051023', 'dw'
UNION SELECT 4, 8,  '20051023', 'fe'
UNION SELECT 4, 9,  '20051023', 'gr'



Необходимо вывести все покупки клиента (сумма, дата, наименование) в обратном хронологическом порядке, пока его кредит больше нуля. Должно получится вот так:

Id_Client DocDate Amount Caption
1 2005-10-24 00:00:00 5.00 qh
1 2005-10-22 00:00:00 3.00 ek
1 2005-10-19 00:00:00 9.00 wj
1 2005-10-18 00:00:00 6.00 tz
1 2005-10-04 00:00:00 1.00 rl
2 2005-10-23 00:00:00 11.00 uc
2 2005-10-21 00:00:00 2.00 iv
3 2005-10-30 00:00:00 2.00 pn
4 2005-10-23 00:00:00 5.00 gr
...
Рейтинг: 0 / 0
27.07.2021, 15:45
    #40086491
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу составить запрос. помогите новичку в SQL
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
;with cte as (
	select 
		*
		,sum(Amount)over(partition by Id_Client order by DocDate desc, Amount desc) as sum_over
		,sum(Amount)over(partition by Id_Client order by DocDate desc, Amount desc) - Amount as sum_over_prev
	from @Table2)
select * 
from cte a inner join @Table1 b on a.Id_Client=b.Id_Client
where b.Value - a.sum_over_prev >= 0
order by 1,2 desc


Id_ClientDocDateAmountCaptionsum_oversum_over_prevId_ClientValue12005-10-24 00:00:00.0005,00qh5,000,00124,0012005-10-22 00:00:00.0003,00ek8,005,00124,0012005-10-19 00:00:00.0009,00wj17,008,00124,0012005-10-18 00:00:00.0006,00tz23,0017,00124,0012005-10-04 00:00:00.0008,00rl31,0023,00124,0022005-10-23 00:00:00.00011,00uc11,000,00213,0022005-10-21 00:00:00.0006,00iv17,0011,00213,0032005-10-30 00:00:00.0004,00pn4,000,0032,0042005-10-23 00:00:00.0009,00gr9,000,0045,00
...
Рейтинг: 0 / 0
27.07.2021, 16:31
    #40086502
alexandrDr87
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу составить запрос. помогите новичку в SQL
court, спасибо вам. а не могли бы вы вкратце объяснить на пальцах решение. в sql я только делаю первые шаги
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не могу составить запрос. помогите новичку в SQL / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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