문제점은 무엇인지 알지만 누구든지이 쿼리를 해결하는 방법으로 제안하십시오. 내가 값을 얻고있다 DATEADD에 달 동안 계산할 때dateadd에서 개월 값을 처리하는 방법
문제는 이상 98,540 :(
declare @Basepool int =10000000
declare @transactioncount bigint =1
declare @Monthnum int=1
declare @ContractId int=1
select CASE @Basepool
WHEN 0 THEN 'N/A'
WHEN -1 THEN 'N/A'
ELSE CASE
WHEN SUM(SUM(@TransactionCount)) OVER (Partition by @ContractId) > @Basepool THEN 'IN-OVERAGE'
--WHEN SUM(SUM(B.TransactionCount)) OVER (Partition by @ContractId) + (SUM(SUM(B.TransactionCount)) OVER (Partition by @ContractId)/MonthNum) > U.BasePool THEN DATEADD(MM, 1, GETDATE())
ELSE CONVERT(VARCHAR(20),DATEADD(MM,CAST(ROUND((@Basepool - SUM(SUM(@TransactionCount)) OVER (Partition by @ContractId))
/(SUM(SUM(@TransactionCount)) OVER (Partition by @ContractId)/@Monthnum),0) as INT), GETDATE()),101)
--(basepool - sumcontract)/(sumcontract/monthNum) is the expected months to reach overage
END
END AS ExpectedDate
쿼리가 2013-04-29에 실행될 경우 98540 대신 95840이어야합니다. –