這是我的我的表如何if語句情況下,使用SQL Server 2014
INSERT INTO Paiment (PaimentDate, Champs1, Champs2, Champs3)
VALUES (2013, 90, 70, 60), (2011, 20, 30, 40), (2009, 50, 0, 60),
(2008, 60, 16, 60), (2007, 0, 36, 20), (2006, 30, 25, 63),
(2017, 10, 70, 40), (2019, 20, 30, 32), (2030, 50, 0, 63),
(2020, 60, 16, 22), (2018, 0, 36, 33), (2005, 30, 25, 17)
當entrydate
是在2005年之前,使之champs1和champs2與paimentDate
降低至2009年
否則entrydate
大於或等於2005年,使冠軍金額1與paimentDate
低於2003 +金額冠軍2與paimentDate
低於2001
這是我的代碼,請任何人co幫助我。
select
(Case
when DateofEntry < 2011 AND PaimentDate < 2005
Then (IsNull(Champs1, 0) + IsNull(Champs2, 0)
Else (case when DateofEntry >= 2001
Then (
(CASE WHEN PaimentDate < 2009 THEN ISNULL(Champs1.E1, 0) ELSE 0 END
+
CASE WHEN PaimentDate < 2011 THEN ISNULL(Champs2.E3, 0) ELSE 0 END)
)
end)
End)
這是我的代碼。問題是當paiementDate低於2005時,它必須使champs1 + champs2中的所有元素與paiment低於2005的總和,但是在此代碼中,即使paiment高於2005年,它也會得到所有champs1 + champs2的總和,並且那不是我正在尋找的。
任何幫助,請
'CASE'在T-SQL是一個** **表達式計算結果爲**正好一個原子值** - 它不是一個聲明,可選地執行一個代碼分支或其他... –