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

@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
Не могу составить запрос. помогите новичку в SQL
    #40086491
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Не могу составить запрос. помогите новичку в SQL
    #40086502
alexandrDr87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court, спасибо вам. а не могли бы вы вкратце объяснить на пальцах решение. в sql я только делаю первые шаги
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не могу составить запрос. помогите новичку в SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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