2015-02-20 3 views
0

Мне нужно вытащить сумму продаж за 12-месячный период, но мой администратор базы данных не дал мне права на создание временных таблиц, поэтому я не могу использовать те, что я видел в нескольких сообщениях при поиске в Интернете. Кроме того, большинство из которых я нахожу, ссылаются на использование SQL 2012. Некоторые из серверов, к которым я должен иметь доступ, - это SQL 2000, некоторые из них - SQL 2012, и мне нужна эта работа для обоих. Вот пример кода:Временные рамки для прокатки без временных таблиц

Select Rep 
,Rep_ID 
,Cast(Case when Sales_Date between '2/1/2014' and '1/31/2015' then Sum(Sales) else 0 end as decimal(18,2)) as "Sales Amount" 

From dbo.Sales 

ответ

1

Итак, вы пытаетесь получить объем продаж для каждого представителя за последние 12 месяцев?

SELECT Rep 
    ,Rep_ID 
    ,"Sales Amount" = Sum(Sales) 
FROM dbo.Sales 
WHERE Sales_Date 
    BETWEEN DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) -12, 0) 
     AND DATEADD(SECOND, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)) 
GROUP BY Rep, Rep_ID 

EDIT: Незначительные исправления ошибок, то между датами в настоящее время 2014-02-01 00: 00: 00,000 И 2015-01-31 23: 59: 59,000

+0

Я попытался это и я получаю error Тип Дата не является определенным типом системы. Это был сервер SQL 2000. –

+0

Может быть, не отбрасывается на дату, тогда – MWillemse

+0

Я попытался просто удалить состав как часть даты, а код запустился, но возвращает 0 результатов –