2012-05-10 1 views
0
SELECT DISTINCT property1, property2, SUM(property3) FROM t GROUP BY property1; 

Это даетКак собрать все различные значения столбца2 в каждой группе, сгруппированной по столбцу1?

p11 p211 sum(p311, p312, ...) 
p12 p221 sum(p321, p322, ...) 

Но я хочу

p11 (p211, p212, ...) sum(p311, p312, ...) 
p12 (p221, p222, ...) sum(p321, p322, ...) 

или что-то содержит эквивалентную информацию. Как это сделать?

+0

Можете ли вы сделать это и в Oracle? – qazwsx

ответ

1

MySQL обеспечивает GROUP_CONCAT функцию, которая делает именно то, что вы хотите:

SELECT property1, GROUP_CONCAT(property2), SUM(property3) FROM t GROUP BY property1; 

Я не знаю, что эквивалент в других РСУБД.

+0

'GROUP_CONCAT', кажется, усекается в определенную точку, то есть если в группе больше определенного количества строк, и/или длина результирующего значения столбца проходит некоторый порог, остальное отбрасывается. Есть идеи об этом? – qazwsx

+0

Из [docs] (http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat): «Синтаксис для изменения значения group_concat_max_len во время выполнения следующим образом, где val является целым числом без знака: « ' SET [GLOBAL | SESSION] group_concat_max_len = val; ' – gcbenison

+0

Насколько велик этот' val'? – qazwsx

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