我有一个非常古老的DB2数据库。它有一个看起来像这样的表
NODE FILE SIZE
X abc.txt 23
X abc.txt 23
X abc.txt 28
X xyz.txt 450
Y abc.txt 74
我需要编写一个查询来显示输出为(X,478)和(Y,74)。我需要按每个节点进行分组,文件单独查找最大文件的总和,以防有重复文件。我不能使用SELECT * FROM (SELECT...)
构造,因为DBMS不支持它。有什么想法吗?
答案 0 :(得分:1)
你可以做#Temp
个表吗?如果没有,你可以制作一个真正的表并使用下面的逻辑。
CREATE TABLE #TEMP (Node CHAR(1), FILE Varchar(35), SIZE int)
SELECT NODE, FILE, MAX(SIZE)
FROM MyTable
GROUP BY NODE, FILE
SELECT NODE, SUM(SIZE)
FROM #Temp
GROUP BY NODE
基本上,第一步获取所有MAX(SIZE)值和不同的节点/文件组合,然后您只是从该结果集聚合得到最终结果。
修改强>
由于你不能做临时表,只需创建一个普通表,即TempResults
并将其放在最后。