Как преобразовать таблицу из списка в логическое значение - PullRequest
0 голосов
/ 05 марта 2019

У меня есть такая таблица в postgresql:

id | item1 | item2  |
1  | book  | pencil |
2  | book  | pencil |
3  | pen   | ruler  |
4  | book  | pen    |

, затем я хочу изменить ее на:

id  | book | pencil | pen | ruler |
1   | 1    | 1      | 0   | 0     |
2   | 1    | 1      | 0   | 0     |
3   | 0    | 0      | 1   | 1     |
4   | 1    | 0      | 1   | 0     |

, которая равна 1 для истины и 0 для ложной

как теперь запрос на его преобразование?

1 Ответ

0 голосов
/ 07 марта 2019

Попробуйте это

SELECT 
id, 
COUNT(CASE WHEN (t.item = 'book') THEN 1 ELSE NULL END) AS book, 
COUNT(CASE WHEN (t.item = 'pencil') THEN 1 ELSE NULL END) AS pencil, 
COUNT(CASE WHEN (t.item = 'pen') THEN 1 ELSE NULL END) AS pen, 
COUNT(CASE WHEN (t.item = 'ruler') THEN 1 ELSE NULL END) AS ruler
FROM 
(
SELECT id, item1 AS item FROM test_pivot AS  t1 
UNION ALL 
SELECT id, item2 AS item FROM test_pivot AS t2
) AS t
GROUP BY id
...