MySQL запрос самостоятельного соединения? - PullRequest
1 голос
/ 24 марта 2020

У меня есть таблица, которая выглядит следующим образом:

-------------------------------------
col0 | col1 | col2 | .......| col10 |
-------------------------------------
1    | A    | 2.5  | .......| 4.5   |
-------------------------------------
2    | A    | 3.5  | .......| 5.5   |
-------------------------------------
3    | A    | 4.5  | .......| 6.5   |
-------------------------------------
1    | B    | 2.5  | .......| 4.5   |
-------------------------------------
2    | B    | 3.5  | .......| 5.5   |
-------------------------------------
3    | B    | 4.5  | .......| 6.5   |
-------------------------------------
1    | C    | 2.5  | .......| 4.5   |
-------------------------------------
2    | C    | 3.5  | .......| 5.5   |
-------------------------------------

Я хочу запустить SQL Запрос, который выводит таблицу следующим образом:

col0 |  A  | B   |
------------------
1    | 2.5 | 2.5 |
------------------
2    | 3.5 | 3.5 |
------------------
3    | 4.5 | 4.5 |

это то, что у меня есть попробовал:

select table_a.col0,
table_a.col2 as "A" where table_a.col1="A",
table_b.col2 as "B" where table_b.col1="B"
from table as table_a inner join table as table_b
on table_a.col0=table_b.col0

и


select table_a.col0,
table_a.col2 as "A" where table_a.col1="A",
table_b.col2 as "B"
from table as table_a inner join table as table_b
on table_a.col0=table_b.col0 where table_b.col1="B";

Я пробовал много разных запросов в этом порядке, чтобы решить синтаксическую ошибку, все еще не повезло. Новичок в SQL, пожалуйста, помогите.

1 Ответ

1 голос
/ 24 марта 2020

Вы можете просто выполнить условное агрегирование для поворота набора данных:

select
    col0,
    max(case when col1 = 'A' then col2 end) A,
    max(case when col1 = 'B' then col2 end) B
from mytable
where col1 in ('A', 'B')
group by col0

Запрос группирует строки, имеющие одинаковое значение в col0; затем условные выражения в предложении select выбирают значения, соответствующие строкам A и B.

...