0
我的數據按ID和checkdate分組,以便每個人對於每個checkDate都有一行,他們收到一張支票。我爲每個checkDate列出總額(YTDGross)和延期金額(YTD401K)。使用SQL Server 2012中的計算列進行計算
我想計算3個額外的列。
第一計算使用下式的匹配量(匹配度):
IIF(YTD401K<=.04*YTDGross,IIF(YTDGross<=265000,YTD401K-PriorYTD401kMatch,
IIF((YTD401K-PriorYTD401kMatch)>(10600-PriorYTD401kMatch),10600-PriorYTD401kMatch,YTD401K-PriorYTD401kMatch)),
IIF(YTDGross<=265000,(ROUND(.04*YTDGross,2)-PriorYTD401kMatch),10600-PriorYTD401kMatch)) AS Match
的公式本身是不相干的不同之處在於它是指另一列也需要計算:PriorYTD401kMatch。而這一列依次是從第三列計算的 - 它是上一行的YTD401KMatch。
YTD401KMatch簡直是PriorYTD401kMatch +匹配
我看不出這是SQL Server 2012中爲每一個三個新列的可能是一個迂迴的方式彼此依賴。有人隨時向我展示燈光。
下面是最新的選擇,我堅持之前:
SELECT
c.co,
c.id,
c.checkDate,
yg.gross,
yg.YTDGross,
c.cont401k,
SUM(c.cont401k) OVER (PARTITION BY c.id ORDER BY c.checkDate) AS YTD401K,
c.match401K,
SUM(c.match401k) OVER (PARTITION BY c.id ORDER BY c.checkDate) AS YTD401KMatch
INTO
#YTD401K
FROM
#Contributions c
FULL JOIN
#YTDGross yg ON
yg.co = c.co AND yg.id = c.id AND yg.checkDate = c.checkDate
如果您要使用存儲過程,您可能會具有更好的可讀性。 – zedfoxus
可以使用嵌套子查詢。或者可以使用基本計算創建視圖,然後將查詢放在視圖上。 – Glenn