0

我有一张如下表:

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 的百分比差异。

例如,第 9 行和第 19 行是 FileID 1 的最新加载。

我想看到类似的东西:

FileID  CountDiff PercDiff
1       314881    44

有什么建议么?

谢谢

4

1 回答 1

4

您可以将其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

Demonstration

如果你只是想知道它对于最终的给定FileID用途。因为它是唯一一个有两行的,所以它是唯一一个显示出来的。WhereSelectFileID=1

于 2013-10-14T08:21:32.260 回答