Я немного новичок в SQL, поэтому, пожалуйста, потерпите меня :) У меня есть группа людей и около 60 или около того возможных характеристик, назовем их x1, x2, ..., x60. Для каждого человека может применяться одна, много или ни одна из этих характеристик. Эта информация хранится в таблице:
TABLE1:
ID C
1 x1
1 x2
1 x6
2 x3
2 x7
3 x2
4 x2
4 x5
4 x6
4 x8
...
Я хочу представить эту информацию, используя 60 столбцов битов, где 1 означает, что характеристика присутствует, а 0 означает, что ее нет.
TABLE2:
ID x1 x2 x3 x4 x5 x6 x7 x8 ...
1 1 1 0 0 0 1 0 0
2 0 0 1 0 0 0 1 0
3 0 1 0 0 0 0 0 0
4 0 1 0 0 1 1 0 1
очень утомительно обновлять столбцы один за другим, то есть повторять
update table2 set table2.x1 = 1
from table1
where table1.C = 'x1'
60 раз для каждого из си. И это работает очень медленно.
Я думал сделать что-то вроде
update table2
set table2.x1 = case table1.C when 'x1' then 1 else 0 end,
set table2.x2 = case table1.C when 'x2' then 1 else 0 end,
...
from table1
, что намного быстрее, но не работает в случае, когда человек имеет несколько характеристик, все, кроме последнего, перезаписываются.
Во всяком случае, если у кого-то есть какие-то предложения, это было бы здорово! Я чувствую, что такого рода задачи должны быть довольно распространенными, и, надеюсь, у кого-то есть изобретательный способ сделать это ...
Спасибо!