使用案例查询更新字段

时间:2013-06-27 00:09:28

标签: sql

据说,有一个电视频道'bbc'属于entertainment_pack和extra_pack。 我想编写一个case语句,使得bbc落在包列下的两个包中。

像,

Select channel_name, 
       case when channel_name = 'bbc' then entertainment_pack
            when channel_name = 'bbc' then extra_pack end as Packages
From TableA 

但问题是bbc正在更新到一个软件包而不是两个软件包。请建议最佳前进方向。

1 个答案:

答案 0 :(得分:0)

您需要使用连接或联合执行此操作,因为您希望输出中的行多于输入中的行:

Select a.channel_name, p.package_name
From TableA a left outer join
     (select 'bbc' as channel_name, 'entertainment_pack' as package union all
      select 'bbc' as channel_name, 'extra_pack' as package
     ) p
     on a.channel_name = p.channel_name;

这将为非BBC频道返回NULL。您可以将其他包添加到p子查询中。