2013-06-10 2 views
0

Я получаю SUM некоторых данных из запроса. SUM может иметь как отрицательные, так и положительные значения. Я хочу вставить положительные значения в одну таблицу и отрицательные значения в другую таблицу.Вставить в несколько таблиц из одного запроса

Результирующий набор для выбора запроса, как показано ниже

total  | userid 
----------------------- 
4750.00  | 11 
1339.00  | 3607 
-681.81  | 3600 

я планировал вставить детали из запроса на выборку непосредственно к столу, INSERT into table (amount,user) SELECT SUM(..) AS total,userid FROM.... Но я не мог понять, как это сделать в одном запросе.

Я использую PostgreSQL 8.4.17

+1

Есть причина, вы не можете сделать это в двух запросов? –

+0

Нет проблем при использовании двух запросов. Но все же я не понимаю, как добавить оператор 'if/else' между' INSERT' и 'SELECT'query –

ответ

2

Используйте where заявление в двух отдельных inserts:

INSERT into positives (amount,user) 
    SELECT SUM(..) AS total, userid 
    FROM... 
    having sum(..) > 0; 

INSERT into negatives (amount,user) 
    SELECT SUM(..) AS total, userid 
    FROM... 
    having sum(..) < 0; 
+0

. Уравнение внутри суммы является сложным:' SUM (((* *)) - (c/100)). Так что расчет его два раза может быть немного тяжелым ... правильно? –

+1

@NandakumarV. , , На самом деле это не так сложно. Чем выше производительность, тем выше таблица. Если запрос действительно занимает заметное количество времени для запуска, затем поместите полные результаты во временную таблицу и просто вставьте из нее. –

 Смежные вопросы

  • Нет связанных вопросов^_^