Вот некоторые SQL, которая работает нормально внутри и SP (SQL Server 2000)случай использования состояние при вставке
Insert into #sysAccrual
Select 'R', Cast(S.ServicePurchaseLineID as varchar),
- S.Amount, dateadd(mm, 1, S.Date), null, L.LicenceTypeID, null,
L.LicenceID, L.LicenceNumber
from sysMYOB_SP S inner join Licence L ON S.LicenceID = L.LicenceID
and S.PaymentReasonID = 2
and S.Accrued = 0
and S.Deducted = 1
and datediff(yy, S.Date, @AccrualMonth) = 0
and datediff(mm, S.Date, @AccrualMonth) = 0
Я хотел бы поместить состояние вокруг этой части «DATEADD (мм, 1, S. Дата)»Если е в состоянии сделать это:
Insert into #sysAccrual
Select 'R', Cast(S.ServicePurchaseLineID as varchar), - S.Amount,
case when
dateDiff(d, S.Date , LCS.statusDateTo) > 31 THEN
dateadd(mm, 1, S.Date),
ELSE
S.Date,
END
null, L.LicenceTypeID, null,
L.LicenceID, L.LicenceNumber
from sysMYOB_SP S inner join Licence L ON S.LicenceID = L.LicenceID
inner join licCurrentStatus LCS ON L.LicenceID = LCS.LicenceID
and S.PaymentReasonID = 2
and S.Accrued = 0
and S.Deducted = 1
and datediff(yy, S.Date, @AccrualMonth) = 0
and datediff(mm, S.Date, @AccrualMonth) = 0
@ghost моих вопросов я могу сделать эту часть второго запроса:
case when
dateDiff(d, S.Date , LCS.statusDateTo) > 31 THEN
dateadd(mm, 1, S.Date),
ELSE
S.Date,
END
Я являюсь ип убедитесь, что в случае, если я использую этот случай, внутри вставки, как я сделал.
Каков ваш вопрос? – Ghost
Вы забыли запятую после 'END', если это ваш фактический код – LittleBobbyTables
И удалите запятые в' THEN' и 'ELSE' после' dateadd (mm, 1, S.Date) 'и' S.Date' соответственно – peterm