Исходя из результата, похоже, вы хотите, чтобы значение B_1
было min(B)
, а C_1
было соответствующим значением C
из той же строки. Аналогично, значение B_2
должно быть max(B)
, а C_2
- соответствующим значением C
из той же строки.
В вашем запросе у вас есть обычные столбцы, появляющиеся в SELECT
, без их включения в GROUP BY
. Это приведет к ошибке в новой версии MySQL (и во всех других базах данных).
Вы можете сначала вычислить MIN(B)
и MAX(B)
, а затем снова объединить результат с таблицей, чтобы получить C
столбцы.
select minb as 'B_1',
max(c1) as 'C_1',
maxb as 'B_2',
min(c2) as 'C_2'
from (
select
s.minb,
if (s.minb=m.B, m.C, null) as c1,
s.maxb,
if (s.maxb=m.B, m.C, null) as c2
from test m
join (
select A,
min(B) as `minb`,
max(B) AS `maxb`
from test
group by A
) as s on s.A=m.A
) as q
group by minb, maxb
См. dbfiddle