Нахождение итоговой суммы
Я написал этот запрос, чтобы найти общую сумму нетто. Но я получаю ошибку. Ребята, не могли бы вы мне помочь?
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