簡體   English   中英

SQL Server 2008-計算最后兩個最大ID

[英]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

有什么建議么?

謝謝

您可以將此CTEROW_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM