sql server 行转列和列转行的使用
1: 行转列
子查询,获取一定数据集结果
SELECT objid,action,count(1) AS [count] FROM T_MyAttention WHERE objid IN
(SELECT TOP 10 objid FROM T_MyAttention tma GROUP BY objid ORDER BY count(1) DESC)
GROUP BY objid,action
下面用 行转列语法获取 最终结果
select *
from
(
SELECT objid,action,count(1) AS [count] FROM T_MyAttention WHERE objid IN
(SELECT TOP 10 objid FROM T_MyAttention tma GROUP BY objid ORDER BY count(1) DESC)
GROUP BY objid,action
) t
pivot ( sum(count) for t.action in ([1],[2],[3],[4])) as ourpivot
微软官方的图:
2: 列转行
怎么把一条记录拆分成几条记录?
User No. A B C
1 1 21 34 24
1 2 42 25 16
RESULT:
User No. Type Num
1 1 A 21
1 1 B 34
1 1 C 24
1 2 A 42
1 2 B 25
1 2 C 16
declare @t table(usser int ,no int ,a int,b int, c int)
insert into @t select 1,1,21,34,24
union all select 1,2,42,25,16
SELECT usser,no,Type=attribute, Num=value
FROM @t
UNPIVOT
(
value FOR attribute IN([a], [b], [c])
) AS UPV
--结果
/*
usser no Type num
---- --- -------- --------
1 1 a 21
1 1 b 34
1 1 c 24
1 2 a 42
1 2 b 25
1 2 c 16
*/
最新文章
- NPOI 自定义单元格背景颜色-Excel
- Papa Parse – 超强大的多线程 CSV 文本解析库
- CPU时间戳获取
- java面试资料总结
- [Node.js] npm init &;&; npm install
- 安卓UI美化_drawable
- DOS命令(系统错误5,拒绝访问)的解决方法
- Sql万能分页代码
- 扒一扒EOS的前世今生
- knn算法的c语言实现
- 接口由40秒到200ms优化记录
- centos7 安装oracle11g
- eclipse如何以指定JDK启动
- yum install 下载后保存rpm包
- C/C++基础----特殊工具和技术 (重载new和delete,RTT,限定作用域的枚举类型,类成员指针,嵌套类,局部类,volatile,链接指示 extern “C”)
- php删除非空目录代码实现
- bzoj1082
- index range scan,index fast full scan,index skip scan发生的条件
- POJ 3376 Finding Palindromes(manacher求前后缀回文串+trie)
- 出现多个sessid
热门文章
- Django框架之DRF 基于mixins来封装的视图
- centos jira wiki 开机自启
- ASP.NET Core在支付宝小程序中使用signalR
- 【转载】C#中string类使用Substring方法截取字符串
- flutter报错--ProcessException: Process... gradlew.bat ...exited abnormally
- Python简单的CTF题目hash碰撞小脚本
- Android Exception Hook
- 使用Cloudera Manager部署oozie
- 探索JVM底层奥秘ClassLoader源码分析
- Linux常用时间函数