Помогите написать запрос в очень старой СУБД - PullRequest
2 голосов
/ 14 июля 2011

Мне нужно работать с очень старой базой данных 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...), поскольку СУБД не поддерживает ее.Есть мысли?

1 Ответ

1 голос
/ 14 июля 2011

Можете ли вы сделать #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, и отбросьте ее в конце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...