Нахождение итоговой суммы

Я написал этот запрос, чтобы найти общую сумму нетто. Но я получаю ошибку. Ребята, не могли бы вы мне помочь?

SELECT SUM(net) AS net
FROM (select SUM(FB.[Net]) as net  FROM  (([table1 AS FB INNER JOIN
Date ON FB.DateKey =  Date.DateKey)
inner join [Store] on [Store].StoreKey = FB.StoreKey) WHERE (FullDate BETWEEN DATEADD(WEEK, -12, CONVERT(date, GETDATE())) 
AND DATEADD(day, -1, CONVERT(date, GETDATE()))
AND SName = 'XYZ'
AND DayNameOfWeek = 'Monday')
GROUP BY FB.[Net])

С уважением

2 ответа

Решение

Форматирование вашего кода является ключевым:

SELECT  SUM(net) AS net
FROM    (
            SELECT  SUM(FB.[Net]) as net  
            FROM    ((
                        [table1 AS FB 
                        INNER JOIN  Date 
                                ON  FB.DateKey =  Date.DateKey
                    )
                    inner join [Store] 
                            on [Store].StoreKey = FB.StoreKey
                    ) 
                    WHERE   (FullDate BETWEEN DATEADD(WEEK, -12, CONVERT(date, GETDATE())) 
                        AND DATEADD(day, -1, CONVERT(date, GETDATE()))
                        AND SName = 'XYZ'
                        AND DayNameOfWeek = 'Monday')
                    GROUP BY FB.[Net]
                    )

Я вижу много ошибок сейчас. Я думаю, что это решает большинство синтаксических ошибок, но я не уверен, что дает результаты, которые вы хотите:

SELECT  SUM(net) AS net
FROM    (
            SELECT  SUM([Net]) as net  
            FROM    (
                        SELECT      FB.net
                        FROM        table1 AS FB 
                        INNER JOIN  [Date] 
                                ON  FB.DateKey =  [Date].DateKey                    
                        inner join  [Store] 
                                on  [Store].StoreKey = FB.StoreKey                  
                        WHERE   FullDate BETWEEN DATEADD(WEEK, -12, GETDATE()) AND DATEADD(day, -1, GETDATE())
                            AND SName = 'XYZ'
                            AND DayNameOfWeek = 'Monday'
                        GROUP BY FB.[Net]
                    ) A
        ) B

Это ваш собственный код без синтаксических ошибок (насколько я могу судить). Следующий код должен дать тот же набор результатов:

SELECT      SUM(DISTINCT FB.net)
FROM        table1 AS FB 
INNER JOIN  [Date] 
        ON  FB.DateKey =  [Date].DateKey                    
INNER JOIN  [Store] 
        ON  [Store].StoreKey = FB.StoreKey                  
WHERE       FullDate BETWEEN DATEADD(WEEK, -12, GETDATE()) AND DATEADD(day, -1, GETDATE())
        AND SName = 'XYZ'
        AND DayNameOfWeek = 'Monday'

Вы уверены, что это то, что вы хотите?

Попробуй вот так, убрал лишние скобки и добавил правильный псевдоним. Пожалуйста, добавьте псевдоним в фильтр предложений "Where".

SELECT SUM(net) AS net
FROM (
    SELECT SUM(FB.[Net]) AS net
    FROM [table1] FB
    INNER JOIN [Date] D ON FB.DateKey = D.DateKey
    INNER JOIN [Store] S ON S.StoreKey = FB.StoreKey
    WHERE FullDate BETWEEN DATEADD(WEEK, - 12, CONVERT(DATE, GETDATE()))
            AND DATEADD(day, - 1, CONVERT(DATE, GETDATE()))
        AND SName = 'XYZ'
        AND DayNameOfWeek = 'Monday'
    GROUP BY FB.[Net]
    ) t
Другие вопросы по тегам