帮助在非常旧的DBMS中编写查询

时间:2011-07-14 12:40:11

标签: sql db2

我有一个非常古老的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不支持它。有什么想法吗?

1 个答案:

答案 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并将其放在最后。