Как получить 2 значения с одинаковым номером в 2 отдельных столбцах - PullRequest
0 голосов
/ 23 марта 2020

Я получил такую ​​таблицу:

num |type|value
--------------
1 | a   | 5
1 | b   | 7
3 | c   | 9
2 | a   | 6
2 | b   | 9

и хочу такой результат:

num| value (a) | value (b)
-------------------------
1  |    5      |   7
2  |    6      |   9

Ответы [ 3 ]

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

Я бы присоединился к столу сам, один раз для a и один раз для b

SELECT a.num, a.value, b.value
FROM   mytable a
JOIN   mytable b ON a.num = b.num AND a.type = 'a' AND b.type = 'b'
1 голос
/ 23 марта 2020

Вы можете использовать самосоединение, которое также удалит строки только с одним значением (num = 3 в данных примера)

select t1.num, t1.value as value_a, t2.value as value_b
from the_table t1 
  join the_table t2 on t1.num = t2.num and t2.type = 'b'
where t1.type = 'a'
1 голос
/ 23 марта 2020

Вы можете использовать GROUP BY и CASE, например:

select
  num,
  max(case when type = 'a' then value end) as value_a,
  max(case when type = 'b' then value end) as value_b
from t
group by num
...