这是我的表格,我有5个不同的程序。当用户喜欢它的程序时,如下所示:
User Program
----------------
A 1
A 4
B 2
B 4
B 5
但是我想编写一个查询,让我也可以看到每个用户的5个不同的程序,并创建一个新的列,如果用户喜欢特定的程序,则需要两个值(二进制)1,如果不是0.任何帮助将不胜感激。感谢
User Program NewColumn
A 1 1
A 2 0
A 3 0
A 4 1
A 5 0
B 1 0
B 2 1
B 3 0
B 4 1
B 5 1
答案 0 :(得分:1)
您可以使用cross join
和left join
:
select u.user, p.program,
(case when t.user is not null then 1 else 0 end) as NewCol
from (select distinct user from table) u cross join
(select distinct program from table) p left join
table t
on u.user = t.user and p.program = t.program;
注意:您可能已经拥有包含用户和程序的表。如果是这样,请使用它们而不是子查询。