实现行转列
来源:互联网 发布:汉仪小麦体 mac 编辑:程序博客网 时间:2024/06/06 07:25
1. /*
2.
3. a
4. name objec score
5. a EN 89
6. a CH 78
7. a HO 99
8. b EN 34
9. b CH 88
10. b HO 66
11. 要求输出结果为:
12. name EN CH HO
13. a 89 78 99
14. b 34 88 66
15. */
16.
17. USE tempdb
18. IF (SELECT 1 FROM sys.sysobjects WHERE name ='t' AND type='u') is NOT NULL
19. DROP TABLE t
20.
21.
22. CREATE TABLE t
23. (
24. NAME CHAR(10),
25. objec CHAR(10),
26. score FLOAT
27. )
28. INSERT INTO t
29. VALUES('a','EN',89),('a','CH',78),('a','HO',99),('b','EN',34),('b','CH',88),('b','HO',66)
30.
31. SELECT * FROM T
32.
33. SELECT NAME ,MAX(CASE objec WHEN 'EN' THEN score ELSE 0 END ) EN,MAX(CASE objec WHEN 'CH' THEN score ELSE 0 END ) CH,MAX(CASE objec WHEN 'HO' THEN score ELSE 0 END ) HO
34. FROM t
35. GROUP BY NAME
36. --=======================================================================================================================================================
37. /*
38. 实现行转列
39. a
40. name objec score
41. a EN 89
42. a CH 78
43. a HO 99
44. b EN 34
45. b CH 88
46. b HO 66
47. 要求输出结果为:
48. name objec totalsorce
49. a EN,CH,HO 266
50. b EN,CH,HO 188
51. */
52.
53. USE tempdb
54. IF (SELECT 1 FROM sys.sysobjects WHERE name ='t' AND type='u') is NOT NULL
55. DROP TABLE t
56.
57. CREATE TABLE t
58. (
59. NAME CHAR(10),
60. objec CHAR(10),
61. score FLOAT
62. )
63. INSERT INTO t
64. VALUES('a','EN',89),('a','CH',78),('a','HO',99),('b','EN',34),('b','CH',88),('b','HO',66)
65.
66. SELECT * FROM T
67.
68. --为了去除objec中的最后一个逗号,插入一个临时表,并使用substring处理
69. SELECT name ,(SELECT LTRIM(RTRIM(objec))+',' FROM T WHERE objec=t.objec FOR XML PATH('')) objec,SUM(temp.score) totalscroe INTO #tmp
70. FROM T temp
71. GROUP BY name
72.
73.
74. SELECT NAME ,SUBSTRING(objec,0,LEN(objec)-1) objec ,totalscroe
75. FROM #tmp
- 实现行转列
- pivot实现行转列--mybatis实现
- Kettle实现行转列2(Kettle实现)
- DataList 实现 行转列
- 存储过程实现行转列
- SQL查询实现行转列
- Linq 实现 DataTable 行转列
- Linq 实现 DataTable 行转列
- 如何实现DB2行转列
- mysql 行转列的实现
- SQL实现行转列
- Linq实现DataTable行转列
- Mysql行转列的实现
- oracle 函数 实现行转列
- MySQL 实现行转列SQL
- python 实现动态行转列
- SQL 实现行转列
- Mysql实现行转列
- 堆与败者树比较
- ubuntu下source、sh、bash、./执行脚本的区别
- 【USACO-Chapter1-1.1】【DP】Broken Necklace
- bigtable
- 未来不带任何东西就能支付 欧洲已采用指纹支付
- 实现行转列
- Oracle EBS教学视频
- android调用天气预报的webservice服务的例子
- SRM 546 div2
- struts2中的拦截器
- yarin的blog
- 控制结构
- 使用AudioTrack播放PCM音频数据(android)
- linux中link,unlink,close,fclose详解 .