Статистика продаж Искала / месяц

Я пытаюсь получить статистику по ежемесячным продажам в iScala ERP. Система отчетов iScala сообщает об этих значениях.

Искала Внутренний отчет

Мой запрос Sql возвращает

3 058 023   2017-01-01
2 237 651   2017-02-01
4 700 720   2017-03-01
2 268 501   2017-04-01
3 183 576   2017-05-01
3 238 173   2017-06-01
1 949 041   2017-07-01
3 077 111   2017-08-01

Мой запрос, выбирая из счетов SL03, применяя Заказ OR20, чтобы вычесть сумму фрахта. После этого я объединяюсь в SL29 Invoice Consolidation History, используя перекрестную заявку, чтобы вычесть Freight и SaleTax.

BEGIN

    SELECT 
    SUM(cast(replace(isnull(b,0),',','.') as decimal(10,0))) Total, 
    cast(cast(DATEADD(MONTH, DATEDIFF(MONTH, 0, d), 0) as date) as varchar(50))  date 
    FROM (
        SELECT 
        SUM(SL03100-aa.f) b , 
        cast(cast(DATEADD(MONTH, DATEDIFF(MONTH, 0, SL03004), 0) as date) as varchar(50)) d 
        FROM SL030100 
                CROSS apply (  
                SELECT top 1 OR20044 f
                FROM OR200100
                WHERE SL030100.SL03036 = OR200100.OR20001 
                    ) aa

        WHERE SL03004 BETWEEN '2017-01-01' AND  DATEADD(d, 1,getdate()) 
        group  by cast(cast(DATEADD(MONTH, DATEDIFF(MONTH, 0, SL03004), 0) as date) as varchar(50))  

    UNION

        SELECT 
        SUM((SL29007-SL29009-ba.f)) b,
        cast(cast(DATEADD(MONTH, DATEDIFF(MONTH, 0, SL29006), 0) as date) as varchar(50)) d  
        FROM SL290100
             CROSS apply (
            SELECT top 1 OR20044 f
            FROM OR200100
            WHERE SL290100.SL29028 = OR200100.OR20001 
                ) ba
        WHERE SL29006 BETWEEN '2017-01-01' AND  DATEADD(d, 1,getdate()) 
        group by  cast(cast(DATEADD(MONTH, DATEDIFF(MONTH, 0, SL29006), 0) as date) as varchar(50))  
    ) AS tbl
    group by cast(cast(DATEADD(MONTH, DATEDIFF(MONTH, 0, d), 0) as date) as varchar(50)) 
    order by cast(cast(DATEADD(MONTH, DATEDIFF(MONTH, 0, d), 0) as date) as varchar(50))



END

Я не знаю, является ли это лучшим способом сделать это или какие поля пропущены. Я чувствую, что разница между внутренним отчетом и моим результатом SQL невелика, но заметна для клиента.

Я надеюсь, что вы можете указать мне правильное направление или некоторые ресурсы, которые могут помочь.

С наилучшими пожеланиями

MK

0 ответов

Другие вопросы по тегам