Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 При выполнении запроса с накоплением по дате неправильно вычисляется сумма.  [new]
vlad_germ
Member

Откуда:
Сообщений: 2
Есть исходная таблица:

createdat Магазин article Продажа_закупка_сумма Поставщик
2010-01-20 2 003281 0,00 51
2010-01-21 2 003281 0,00 51
2010-01-22 2 003281 34,17 51
2010-01-23 2 003281 34,17 51
2010-01-24 2 003281 45,56 51
2010-01-25 2 003281 45,56 51
2010-01-26 2 003281 45,56 51
2010-01-27 2 003281 0,00 51
Запрос для нарастающего итога по полю "Продажа_Закупка_сумма"
SELECT     dbo.Остатки_OLAP.createdat, dbo.Остатки_OLAP.Магазин, dbo.Остатки_OLAP.article, 
		dbo.Остатки_OLAP.Продажа_закупка_сумма, dbo.Остатки_OLAP.Поставщик, 
		SUM(sr.Сумма_продажи_СС) AS Накопительный_итог
FROM       dbo.Остатки_OLAP LEFT  JOIN dbo.Остатки_OLAP AS sr 
                ON dbo.Остатки_OLAP.Поставщик = sr.Поставщик 
                AND dbo.Остатки_OLAP.article = sr.article 
                AND dbo.Остатки_OLAP.Магазин = sr.Магазин 
                AND dbo.Остатки_OLAP.createdat>=sr.createdat
WHERE   
                dbo.Остатки_OLAP.article='003281'
                and dbo.Остатки_OLAP.Магазин=2
                and dbo.Остатки_OLAP.Поставщик=51
GROUP BY dbo.Остатки_OLAP.createdat, dbo.Остатки_OLAP.Магазин,
		dbo.Остатки_OLAP.article, dbo.Остатки_OLAP.Продажа_закупка_сумма, 
                dbo.Остатки_OLAP.Поставщик
order by dbo.Остатки_OLAP.createdat
Результат выполнения:

createdat Магазин article Продажа_закупка_сумма Поставщик Накопительный_итог
2010-01-21 00:00:00.000 2 003281 0,00 51 21584,05
2010-01-22 00:00:00.000 2 003281 34,17 51 21584,05
2010-01-23 00:00:00.000 2 003281 34,17 51 21584,05
2010-01-24 00:00:00.000 2 003281 45,56 51 21584,05
2010-01-25 00:00:00.000 2 003281 45,56 51 21584,05
2010-01-26 00:00:00.000 2 003281 45,56 51 21584,05
2010-01-27 00:00:00.000 2 003281 0,00 51 21584,05
Версия сервера:
Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64) Jul 9 2008 14:17:44 Copyright (c) 1988-2008 Microsoft Corporation Standard Edition (64-bit) on Windows NT 5.2 <X64> (Build 3790: Service Pack 2)
В таблице 23 млн записей. Что можно сделать? Использование курсора вешает сервер. Мне нужен не простой накопительный итог, а для каждой строки итог за последние 30 дней. Но и простой накопительный дает неправильную сумму, как можно обойти?
23 авг 11, 16:58    [11165921]     Ответить | Цитировать Сообщить модератору
 Re: При выполнении запроса с накоплением по дате неправильно вычисляется сумма.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
vlad_germ,

нет тут никакого "накопительного итога"
Насколько я могу судить
23 авг 11, 17:11    [11166031]     Ответить | Цитировать Сообщить модератору
 Re: При выполнении запроса с накоплением по дате неправильно вычисляется сумма.  [new]
Glory
Member

Откуда:
Сообщений: 104751
А почему SUM(sr.Сумма_продажи_СС), когда в таблице поле Продажа_закупка_сумма?
23 авг 11, 17:12    [11166040]     Ответить | Цитировать Сообщить модератору
 Re: При выполнении запроса с накоплением по дате неправильно вычисляется сумма.  [new]
vlad_germ
Member

Откуда:
Сообщений: 2
Glory,
Спасибо дико извиняюсь, сам уже заметил, что суммирую не потому полю. Спасибо за помощь. 2 дня тупил.
23 авг 11, 17:19    [11166086]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить