[英]SQL Server 2008 - calculations on last two max ID's
我有一張桌子,如下所示:
ImportFileID ImportID FileID DateLoaded FileRowCount
1 1 1 2013-10-11 488527
2 1 2 2013-10-11 531175
3 1 3 2013-10-11 488255
6 1 5 2013-10-11 488527
7 1 6 2013-10-11 531175
8 2 1 2013-10-12 750000
9 3 1 2013-10-13 250000
10 1 7 2013-10-11 2505053
11 1 8 2013-10-11 61168
12 1 9 2013-10-11 1484677
13 1 10 2013-10-11 3153568
14 1 11 2013-10-11 162461
15 1 12 2013-10-11 26002
16 1 13 2013-10-11 1131180
17 1 14 2013-10-11 1442160
18 1 4 2013-10-11 2505053
19 4 1 2013-10-14 564881
我想通過ImportID(對於所有文件)獲取最后兩個文件加載,並計算FileRowCount的percantage差異。
例如,第9行和第19行是FileID 1的最新負載。
我想看到類似的東西:
FileID CountDiff PercDiff
1 314881 44
有什么建議么?
謝謝
您可以將此CTE
與ROW_NUMBER
:
WITH CTE AS
(
SELECT [ImportFileID], [ImportID], [FileID], [DateLoaded], [FileRowCount],
RN = ROW_NUMBER() OVER (PARTITION BY FileID
ORDER BY DateLoaded DESC)
FROM dbo.Import
)
SELECT c1.FileID,
CountDiff=c1.FileRowCount-c2.FileRowCount,
PercDiff=ROUND(100.0 * c2.FileRowCount / c1.FileRowCount, 0)
FROM CTE c1 INNER JOIN CTE c2
ON c1.RN=1 AND c2.RN=2 AND c1.FileID = c2.FileID
如果只想知道給定FileID
,請在最后的Select
上使用Where
。 由於FileID=1
是僅有的兩行,因此它是唯一顯示的行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.