Я создаю отчет, который разбивает год на первую половину второй половины. Он также смотрит на то же время, что и в предыдущем году, чтобы показать сравнение. Я пытаюсь создать некоторые переменные, которые будут определять, какой правильный диапазон дат зависит от того, насколько далеко мы живем в текущем году.установка переменных в SQL с использованием условий
У меня возникла проблема с частью инструкции if и 2 переменными, которые устанавливаются во втором операторе if. Я не вижу ничего плохого. Я знаю, что могу передать переменные в клиентском приложении и все это увидеть. Я так близок к этой работе, я бы хотел, чтобы она работала именно так.
Declare @CurrDate as date set @CurrDate = convert(datetime,'27/04/2013',103)
Declare @ThisTimeLastYear as date set @ThisTimeLastYear = dateadd(year,-1,@currdate)
Declare @LastYearCheck as date set @LastYearCheck = convert(datetime,cast(30 as varchar) + '/' + cast(6 as varchar) + '/' + cast(DATEPART (year,@currdate)-1 as varchar) ,103)
Declare @SpringStartlastYear as date set @springStartlastYear = convert(datetime,'01/01/2012',103)
Declare @AutWinterStartLastYear as date set @AutWinterStartLastYear = convert(datetime,cast(01 as varchar) + '/' + cast(07 as varchar) + '/' + cast(DATEPART (year,@currdate)-1 as varchar) ,103)
Declare @springEndLastYear as date
Declare @autumnEndLastYear as date
if (@ThisTimeLastYear < @LastYearCheck)
set @springEndLastYear = @ThisTimeLastYear
/*this year hasn't reached the autumn/winter season so move date ranges out of the way +20 year */
set @AutWinterStartLastYear = DATEADD(year,20,@AutWinterStartLastYear)
set @autumnEndLastYear = DATEADD(year,20,@autumnEndLastYear)
if (@ThisTimeLastYear > @LastYearCheck)
set @springEndLastYear = @LastYearCheck
set @autumnEndLastYear = @ThisTimeLastYear
2 переменные во 2-й инструкции if изменяются, когда они не должны.
Ваш отступ подразумевает, что вы хотите, чтобы несколько строк были предметом 'i f' - который требует, чтобы они были завернуты в 'begin' и' end'. если вы этого не сделаете - только строка, следующая за 'if', является условной - все последующие строки выполняются независимо от результата' if' – dav1dsm1th
. Могли бы вы предоставить некоторые возможные входы и ожидаемые результаты? Я не уверен, что понимаю, что вы хотите вернуть именно этим скриптом. – Josien
полностью забыл о начале конца !!!! спасибо – user2247671