прямо сейчас моя хранимая процедура возвращает 2 разных набора результатов, один для @booked, а другой для @ booked1
Если вы посмотрите внимательно, мой запрос выполняет одно и то же для каждого @booked и @booked, но один для выбранного пользователем года, а другой для текущего года.
Я не хочу двух разных наборов результатов, я хочу объединить выбранный год и текущий год рядом с SDESCR (это общий столбец)
Еще одно препятствие, с которым я сталкиваюсь, заключается в том, что я использую @mode, чтобы решить, хочет ли пользователь продаж, продаж ... и так далее.
Я знаю, что мне нужен какой-то тип соединения, но оно не работает, потому что у меня есть оператор where, который говорит, где dyyyy = @ yeartoget
, который не позволяет работать с данными текущего года
ALTER PROCEDURE [dbo].[test1]
@mode varchar(20),
@YearToGet int
AS
SET NOCOUNT ON
Declare @Booked Int
Set @Booked = CONVERT(int,DateAdd(year, @YearToGet - Year(getdate() + 1),
DateAdd(day, DateDiff(day, 1, getdate()), 1) ) )
Declare @Booked1 Int
Set @Booked1 = CONVERT(int,DateAdd(year, (year( getdate() )) - Year(getdate() + 1),
DateAdd(day, DateDiff(day, 1, getdate()), 1) ) )
If @mode = 'Sales'
Select
Division,
SDESCR,
DYYYY,
Sum(Case When Booked <= @Booked Then NetAmount End) ASofNetSales,
SUM(NetAmount) AS YENetSales,
Sum(Case When Booked <= @Booked Then PARTY End) AS ASofPAX,
SUM(PARTY) AS YEPAX
From dbo.B101BookingsDetails
Where DYYYY = @YearToGet
Group By SDESCR, DYYYY, Division
Order By Division, SDESCR, DYYYY
else if @mode = 'netsales'
Select Division,
SDESCR,
DYYYY,
Sum(Case When Booked <= @Booked Then NetAmount End) ASofNetSales,
SUM(NetAmount) AS YENetSales,
Sum(Case When Booked <= @Booked Then PARTY End) AS ASofPAX,
SUM(PARTY) AS YEPAX
From dbo.B101BookingsDetails
Where DYYYY = @YearToGet
Group By SDESCR, DYYYY, Division
Order By Division, SDESCR, DYYYY
If @mode = 'Sales'
Select
Division,
SDESCR,
DYYYY,
Sum(Case When Booked <= @Booked1 Then NetAmount End) currentNetSales,
Sum(Case When Booked <= @Booked1 Then PARTY End) AS currentPAX
From dbo.B101BookingsDetails
Where DYYYY = (year( getdate() ))
Group By SDESCR, DYYYY, Division
Order By Division, SDESCR, DYYYY
else if @mode = 'netsales'
Select Division,
SDESCR,
DYYYY,
Sum(Case When Booked <= @Booked1 Then NetAmount End) currentNetSales,
Sum(Case When Booked <= @Booked1 Then PARTY End) AS currentPAX
From dbo.B101BookingsDetails
Where DYYYY = (year( getdate() ))
Group By SDESCR, DYYYY, Division
Order By Division, SDESCR, DYYYY
Else if @mode = 'Inssales'
Select Division,
SDESCR,
DYYYY,
Sum(Case When Booked <= @Booked1 Then InsAmount End) currentInsSales,
Sum(Case When Booked <= @Booked1 Then PARTY End) AS currentPAX
From dbo.B101BookingsDetails
Where DYYYY = (year( getdate() ))
Group By SDESCR, DYYYY, Division
Order By Division, SDESCR, DYYYY