Как отфильтровать представление SQL только за этот месяц - PullRequest
0 голосов
/ 18 сентября 2018

Привет, я новичок в этом, поэтому будьте осторожны со мной, я создал представление SQL и мне нужно отфильтровать его в sql перед загрузкой данных в excel, я хочу фильтровать данные только за этот месяц.

Итак, SQL равен

SELECT DocumentNo, DocumentDate, TotalNetValue, TotalTaxValue, TotalGrossValue
FROM dbo.SOPOrderReturn

И это возвращает

Table

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

Вам необходимо сравнить месяц / год документа с текущим месяцем / годом.

SELECT DocumentNo, DocumentDate, TotalNetValue, TotalTaxValue, TotalGrossValue
FROM dbo.SOPOrderReturn
WHERE MONTH(DocumentDate) = MONTH(getdate())
AND YEAR(DocumentDate) = YEAR(getdate())
0 голосов
/ 18 сентября 2018

Я настоятельно рекомендую вам использовать версию, которая может использовать индекс:

SELECT DocumentNo, DocumentDate, TotalNetValue, TotalTaxValue, TotalGrossValue
FROM dbo.SOPOrderReturn
WHERE DocumentDate >= DATEADD(DAY, 1, EOMONTH(GETDATE(), -1)) AND
      DocumentDate < DATEADD(DAY, 1, EOMONTH(GETDATE());

Поскольку ни одна функция не применяется к DocumentDate, оптимизатор сможет использовать индекс.

Обратите внимание, что EOMONTH() доступно с SQL Server 2012. В более ранних версиях существуют эквивалентные методы.

0 голосов
/ 18 сентября 2018

Вы можете использовать функцию месяца, чтобы получить номер месяца и фильтр.

SELECT DocumentNo, DocumentDate, TotalNetValue, TotalTaxValue, TotalGrossValue
FROM dbo.SOPOrderReturn where month(DocumentDate)=9 and Year(DocumentDate)=2018
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...