powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос из подтаблицы с нарастающим итогом, проблема с одной ситуацией.
5 сообщений из 5, страница 1 из 1
Запрос из подтаблицы с нарастающим итогом, проблема с одной ситуацией.
    #40138449
Newber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь написать запрос tsql (MSSQL), который принимает в качестве параметра идентификатор продукта и количество (всегда > 0), и выбирает транзакции, соответствующие этой сумме количества, в порядке убывания по дате. (включая строки с остатком от вычитания)

Например, если я хочу выбрать товар номер 1 с количеством 10 штук. Скрипт должен выбрать все связанные и отсортированные транзакции на эту сумму, даже если в сумме их будет больше 10. (1+3+0+10 >стоп!)
Код: 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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
create table #items(itemid int, qtySum money)
insert into #items values
(1,10),
(2,33),
(3,15),
(4,3 ),
(5,3),
(6,15),
(7,15)

create table #transactions(itemid int, trid int, trdate date, qty money)
insert into #transactions values
(1,1,'20240212',1),
(1,2,'20240211',3),
(1,3,'20240211',0),
(1,4,'20240210',10),
(1,5,'20240209',10),
(1,6,'20240208',1),
(2,7,'20240212',22),
(2,8,'20240211',11),
(2,9,'20240210',-5),
(2,10,'20240210',-4),
(2,11,'20240209',9),
(2,12,'20240209',4),
(2,13,'20240209',6),
(3,15,'20240212',10),
(3,16,'20240211',-2),
(3,17,'20240210',-3),
(3,18,'20240209',8),
(3,19,'20240208',4),
(3,20,'20240207',2),
(4,21,'20240212',5),
(5,22,'20240212',3),
(5,23,'20240211',3),
(5,24,'20240210',3),
(7,25,'20240212',0)
Пытаюсь решить свою задачу с CTE.
Но есть загвоздка.
Для ID=2 выбираются строки 7,8,10,11
А мне надо только 7 и 8
Код: SQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
;WITH cte AS
( SELECT i.itemid,i.qtySum as iQuantity,tr.trid,tr.qty as trQuantity,
SUM(tr.qty) OVER (partition by i.itemid ORDER BY tr.trdate desc ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) AS sum_amount

  FROM #items i
  inner join #transactions tr on i.itemid=tr.itemid and tr.qty<>0
)

SELECT *
FROM cte
WHERE  sum_amount-iQuantity<trQuantity
union
select i.itemid,i.qtySum, NULL, NULL, NULL from #items i where not exists(select top 1 1 from cte c where c.itemid=i.itemid)

drop table #items
drop table #transactions
2024-02-12_20-54-34.png
Кто-нибудь сталкивался с такой задачей?
...
Рейтинг: 0 / 0
Запрос из подтаблицы с нарастающим итогом, проблема с одной ситуацией.
    #40138553
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это принципиально, что бы через CTE?
Код: SQL
1.
2.
3.
4.
select * from #items as i join #transactions as t
on i.itemid = t.itemid
Where i.itemid = 2
and 10 <= t.qty
itemid qtySum itemid trid trdate qty
2 33,00 2 7 2024-02-12 22,00
2 33,00 2 8 2024-02-11 11,00
...
Рейтинг: 0 / 0
Запрос из подтаблицы с нарастающим итогом, проблема с одной ситуацией.
    #40138586
Александр2454
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newber [игнорируется] 

Проектирование реляционной базы данных - это ключевой этап при создании информационной системы. В процессе работы над нашим проектом мы обратились к профессионалам с https://database-design.ru/, и результат превзошел все ожидания! Их эксперты обладают исключительными знаниями в области баз данных, что позволило нам создать оптимальную и эффективную структуру для хранения информации. Сотрудничество с данной компанией - залог успешного развития вашего бизнеса. При необходимости консультации по проектированию базы данных, обращайтесь именно сюда!
...
Рейтинг: 0 / 0
Запрос из подтаблицы с нарастающим итогом, проблема с одной ситуацией.
    #40138648
tomcat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newber [игнорируется] 

старый добрый курсор Вам в помощь
...
Рейтинг: 0 / 0
Запрос из подтаблицы с нарастающим итогом, проблема с одной ситуацией.
    #40138649
tomcat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Newber [игнорируется] 

кстати если условие сделать просто qty>0 то вроде получаются как Вы хотели
sql.PNG
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос из подтаблицы с нарастающим итогом, проблема с одной ситуацией.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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