Возврат 6 в предыдущем месяце выберите в прошлом месяце - PullRequest
0 голосов
/ 20 июня 2019
SELECT DISTINCT itemcode, 
                itemdescription, 
                unitofmeasure, 
                Sum([current]) AS [Ending Balance] 
WHERE  transactiondate >= Dateadd(month, Datediff(month, 0, 
                                         Dateadd(m, -6, '2019-01-31' 
                                         )), 0) 

1 Ответ

1 голос
/ 20 июня 2019

В вашем коде отсутствует предложение FROM и GROUP BY, а разность дат (Six Mont с учетом даты окончания = '2019-01-31') может быть рассчитана, как показано в приведенном ниже сценарии -

SELECT
itemcode, 
itemdescription, 
unitofmeasure, 
Sum([current]) AS [Ending Balance] 
FROM <your_table> -- FROM is missing. Please add appropriate table name
WHERE  transactiondate Between 
    DATEADD(month, -6, '2019-01-31') 
    AND '2019-01-31'  
GROUP BY itemcode,itemdescription,unitofmeasure
-- GROUP BY is required as you applied Aggregation on column [current]

Если вам нужны только записи за 6-й предыдущий месяц, условие WHERE будет выглядеть ниже -

WHERE  YEAR(transactiondate) = YEAR(DATEADD(month, -6, '2019-01-31'))
AND MONTH(transactiondate) = MONTH(DATEADD(month, -6, '2019-01-31')) 

Для получения результатов за последние 6 месяцев WHERE будет показано ниже -

WHERE transactiondate BETWEEN
CAST(LEFT(CAST(DATEADD(MM,-6,CAST('2019-01-31' AS DATE)) AS VARCHAR),7) + '-01' AS DATE)
AND
DATEADD(DD,-1,CAST(CAST(LEFT(CAST(CAST('2019-01-31' AS DATE) AS VARCHAR),7) + '-01' AS DATE) AS DATE))
-- This is basically: transactiondate BETWEEN '2018-07-01' AND '2018-12-31'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...