SQL竖表转换成横表统计

1、请将竖表AA转为横表BB,字段及数据如下所示:
转换前的竖表AA:

ITEM_ID CONTENT CONTENT_CONFIG
2040104 5 acct_item
2040104 6 serv_type
2040104 2 user_type
2040105 1 acct_item
2040105 2 serv_type
2040105 3 user_type

转换后的横表BB:

ITEM_ID CONTENT SERV_TYPE USER_TYPE
2040104 5 6 2
2040105 1 2 3

后面再思考了很久,baidu了几下,发现了二个页面介绍的:sql竖表变横表及NULL值聚合SQL With cube。。模仿着后面那片文章的内容,慢慢的编写了一遍,最后也被我编写出来了,O(∩_∩)O哈哈~

  1. SELECT * FROM
  2. (
  3.     SELECT ITEM_ID,
  4.     SUM(CASE WHEN [CONTENT_CONFIG] = 'acct_item' THEN [CONTENT] END) AS [CONTENT],
  5.     SUM(CASE WHEN [CONTENT_CONFIG] = 'serv_type' THEN [CONTENT] END) AS [SERV_TYPE],
  6.     SUM(CASE WHEN [CONTENT_CONFIG] = 'user_type' THEN [CONTENT] END) AS [USER_TYPE]
  7.     FROM dbo.AA GROUP BY ITEM_ID
  8. ) BB

发现其也不太长的代码,关键是SUM聚合函数和CASE WHEN的联合妙用,真是太强悍了。
那个cnblog的代码更强悍了,支持不定列的。天外有天,学者无境 WHEN的联合妙用,真是太强悍了。

转载于:https://www.cnblogs.com/freedom831215/archive/2010/08/03/1791437.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值