SQL 2008 R2中的枢轴
问题描述:
我有这样的桌子;SQL 2008 R2中的枢轴
Date PlacementName campaignID Impressions Clicks TotalConversions Activity 01/01/2014 USA 100 5000 500 50 Mobile Book 01/02/2014 U.K 101 7000 250 30 Mobile Book 01/01/2014 USA 100 9000 800 40 Mobile TV 01/02/2014 U.K 101 6000 300 10 Mobile TV
我想旋转表15-20活动从真正的表,因为这只是示例表。
我想让我的桌子看起来像下面;
Date PlacementName CampaignID Impressions Clicks Mobile Book Mobile TV 01/01/2014 USA 100 5000 500 50 NULL 01/01/2014 U.K 100 9000 800 NULL 40 01/02/2014 USA 101 7000 250 30 NULL 01/02/2014 U.K 101 6000 300 NULL 10
这是我想要的决赛桌格式。我想写这个表的查询。
答
获得结果的最简单方法是使用聚合函数和CASE表达式将数据行转换为列,但也可以应用PIVOT函数。
select date,
placementname,
campaignid,
impressions,
clicks,
sum(case when activity = 'Mobile Book' then TotalConversions else 0 end) MobileBook,
sum(case when activity = 'Mobile TV' then TotalConversions else 0 end) MobileTV
from yourtable
group by date, placementname, campaignid, impressions, clicks;
select date, placementname,
campaignid, impressions,
clicks,
[Mobile Book], [Mobile TV]
from
(
select date, placementname,
campaignid, impressions,
clicks, activity, totalconversions
from yourtable
) d
pivot
(
sum(totalconversions)
for activity in ([Mobile Book], [Mobile TV])
) p
您正在使用什么数据库管理系统?你做了什么研究?你有没有试图解决你的问题? – Kermit
看看sql count和group by – gerrytan
@FreshPrinceOfSO:如果你不能给出答案,请不要降级我的积分。我对这个环境很陌生,如果不想帮助先生,但不要降低我的声誉。 – ADBI