HP vertica SQL查询创建新列

时间:2015-09-02 18:00:53

标签: sql database vertica

这是我的表格,我有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

1 个答案:

答案 0 :(得分:1)

您可以使用cross joinleft 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;

注意:您可能已经拥有包含用户和程序的表。如果是这样,请使用它们而不是子查询。