2015-08-25 5 views
-2

Здравствуйте я сейчас пишу отчет, основанный на еженедельных продаж, я правильно достиг своей текущей фигуры и работает с моим @FirstdayofWeek и @LastDayOfWeek параметры и им теперь пытаются повторить его моя Прошедшая неделя, как вы знаете, предыдущая неделя -7 дней заDateAdd (по параметру

, когда я запускаю его с этим в моем где п

and FirstDayOfWeek = dateadd(day,-7,'2014/06/02') 
    and LastDayOfWeek = dateadd(day,-7,'2014/06/08') 

это работает, и я получаю эту цифру для предварительного количества и его правильное enter image description here

НО когда я делаю это для моего параметра

AND dateadd(day,-7,w.FirstDayOfWeek) in (
       SELECT Item 
       FROM DataWarehouse.dbo.ufnSplit(@FirstDayOfWeek, ',') 
      ) 
     AND dateadd(day,-7,w.LastDayOfWeek) in (
       SELECT Item 
       FROM DataWarehouse.dbo.ufnSplit(@LastDayOfWeek, ',') 
      ) 

Я получаю заголовки столбцов ничего в любом месте. любые идеи?

Вот код, я использую для выполнения хранимой процедуры:

exec WeeklySalesAndUSW @BD=N'798664', 
@CGNo=N'47', 
@SCGNo=N'01,02,03,04,05,06,07,08', 
@ProductClass=N'1', 
@‌​ProductCode=N'1108', 
@Region=N'772', 
@FirstDayOfWeek = '2014/06/02', 
@LastDayOfWeek = '2014/06/08' 

Почему Isnt моего параметр, проходящий через это? почему это работает, если я жестко кодирую дату, но когда я делаю ее динамичной, она ничего не получает?

+0

где делаются '@ FirstDayOfWeek' и' @ LastDayOfWeek' заполняются? Что такое объявление для 'ufnSplit()'? – TZHX

+0

его сохраненная процедура –

+0

@TZHX un split split позволяет пользователю выбирать несколько дат начала и окончания, это потому, что отчет построен как матрица в визуальной студии , поэтому для каждой выбранной даты therw будут данными продукта, а затем недельные данные раздельно в неделю –

ответ

0

Возможно, это не работает, потому что вы изменили уравнение.

В коде, который работает, вы делаете это:

and FirstDayOfWeek = dateadd(day,-7,'2014/06/02') 
and LastDayOfWeek = dateadd(day,-7,'2014/06/08') 

Обратите внимание, что вы вычитая 7 дней с жестко закодированными «параметры», а не из столбцов в таблице.

Теперь, когда вы пытаетесь использовать динамические значения параметров, вы делаете противоположное:

AND dateadd(day,-7,w.FirstDayOfWeek) in (
       SELECT Item 
       FROM DataWarehouse.dbo.ufnSplit(@FirstDayOfWeek, ',') 
      ) 
     AND dateadd(day,-7,w.LastDayOfWeek) in (
       SELECT Item 
       FROM DataWarehouse.dbo.ufnSplit(@LastDayOfWeek, ',') 
      ) 

Вы вычитая 7 дней из столбца таблицы, а не значений параметров.

Вы можете исправить это, просто удалив знак минуса (-) перед обоими 7-ми. Это связано с тем, что добавление 7 в левую часть уравнения математически такое же, как вычитание 7 с правой стороны.

Смежные вопросы