powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Остатки по дням
14 сообщений из 14, страница 1 из 1
Остатки по дням
    #39898650
hotcolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, подскажите как решить задачу,пожалуйста!
Я только начал пользоваться SQL, буду очень признателен за помощь.
Есть таблица содержащая остаток товаров в магазинах каждое первое число месяца( у этих строк признак 1) и в ней же все движение по датам (+ и -) (у этих строк признак 0) , нужно получить таблицу с остатком на каждый день.

Спасибо!
...
Рейтинг: 0 / 0
Остатки по дням
    #39898687
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hotcolt,

и что не получается?
простейший вариант использования оконной версии sum()
...
Рейтинг: 0 / 0
Остатки по дням
    #39898699
hotcolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WarAnt,
Можно пример написать. Мне предлагают циклом просто решать.
...
Рейтинг: 0 / 0
Остатки по дням
    #39898748
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hotcolt,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
declare @t table (date date, value float)

insert @t
values 
('20191101', 444),
('20191102', 2),
('20191103', 2),
('20191104', 1),
('20191105', 1),
('20191106', 4),
('20191107', 8),
('20191201', 500),
('20191202', 3),
('20191203', 4),
('20191204', 5),
('20191205', 3),
('20191206', 5),
('20191207', 8)

SELECT *, sum(value) over (partition by year(date), month(date) ORDER by date) 
FROM @t
...
Рейтинг: 0 / 0
Остатки по дням
    #39898750
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarAnt, т.к. изменения могут быть не каждый день, нужно ещё таблицу-календарь присоединить.
...
Рейтинг: 0 / 0
Остатки по дням
    #39898782
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Minamoto
WarAnt, т.к. изменения могут быть не каждый день, нужно ещё таблицу-календарь присоединить.


это вы ТСу советуйте мне и так понятно:)), я просто нарисовал пример использования оконной функции
...
Рейтинг: 0 / 0
Остатки по дням
    #39898985
hotcolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WarAnt,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT 
CONVERT (datetime,convert(char(8),DATE_CALC_INT)) AS RealDate ,
MONTH(CONVERT (datetime,convert(char(8),DATE_CALC_INT))) AS RealMonth,
PHARMACY_ID,
PRODUCT_ID,
QUNTITY,
SUM(QUNTITY) OVER (PARTITION BY PHARMACY_ID, PRODUCT_ID, MONTH(CONVERT (datetime,convert(char(8),DATE_CALC_INT)))
ORDER BY CONVERT (datetime,convert(char(8),DATE_CALC_INT)) ,IS_RST DESC) AS OSTATKI,IS_RST
FROM [ANALYTICS_DEPARTMENT_DB].[FTT\k.chepurko].[Fact_Exc_StockMove]
ORDER BY CONVERT (datetime,convert(char(8),DATE_CALC_INT))  



Вот так вот ?
...
Рейтинг: 0 / 0
Остатки по дням
    #39899011
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hotcolt
WarAnt,

SELECT
CONVERT (datetime,convert(char(8),DATE_CALC_INT)) AS RealDate ,
MONTH(CONVERT (datetime,convert(char(8),DATE_CALC_INT))) AS RealMonth,
PHARMACY_ID,
PRODUCT_ID,
QUNTITY,
SUM(QUNTITY) OVER (PARTITION BY PHARMACY_ID, PRODUCT_ID, MONTH(CONVERT (datetime,convert(char(8),DATE_CALC_INT)))
ORDER BY CONVERT (datetime,convert(char(8),DATE_CALC_INT)) ,IS_RST DESC) AS OSTATKI,IS_RST
FROM [ANALYTICS_DEPARTMENT_DB].[FTT\k.chepurko].[Fact_Exc_StockMove]
ORDER BY CONVERT (datetime,convert(char(8),DATE_CALC_INT))

Вот так вот ?


так или не так, вам должно быть виднее по результату работы запроса:)
...
Рейтинг: 0 / 0
Остатки по дням
    #39899074
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WarAnt
hotcolt
WarAnt,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT 
CONVERT (datetime,convert(char(8),DATE_CALC_INT)) AS RealDate ,
MONTH(CONVERT (datetime,convert(char(8),DATE_CALC_INT))) AS RealMonth,
PHARMACY_ID,
PRODUCT_ID,
QUNTITY,
SUM(QUNTITY) OVER (PARTITION BY PHARMACY_ID, PRODUCT_ID, MONTH(CONVERT (datetime,convert(char(8),DATE_CALC_INT)))
ORDER BY CONVERT (datetime,convert(char(8),DATE_CALC_INT)) ,IS_RST DESC) AS OSTATKI,IS_RST
FROM [ANALYTICS_DEPARTMENT_DB].[FTT\k.chepurko].[Fact_Exc_StockMove]
ORDER BY CONVERT (datetime,convert(char(8),DATE_CALC_INT))  



Вот так вот ?


так или не так, вам должно быть виднее по результату работы запроса:)
...
Рейтинг: 0 / 0
Остатки по дням
    #39899200
hotcolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Увы, нет, так считает только по датам когда было движение, и на первые числа строки задваиваются, потому что на первые числа так же есть движение
...
Рейтинг: 0 / 0
Остатки по дням
    #39900688
hotcolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем не получается оконной функцией , из за пробелов в датах , а присоединить таблицу со всеми датами периода * магазины* продукты , не хватило памяти.
Подскажите , как реализовать вариант с циклом, плиз
...
Рейтинг: 0 / 0
Остатки по дням
    #39900776
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hotcolt,

куда же память делась? Годовой календарь содержит всего 365 строк.
...
Рейтинг: 0 / 0
Остатки по дням
    #39900809
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hotcolt
Увы, нет, так считает только по датам когда было движение, и на первые числа строки задваиваются, потому что на первые числа так же есть движение


Вы убрали год из partition, может это причина того что у вам там задваивается?
Вторая причина почему задваивается в том что вы неправильно указали формат хранения данных в первом сообщении.
Насчет цикла,я думаю сами разберетесь, я курсоры не использую, оконная функция сдесь в любом случае решает задачу.
...
Рейтинг: 0 / 0
Остатки по дням
    #39900810
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
hotcolt,

куда же память делась? Годовой календарь содержит всего 365 строк.

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


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