1. /*MSSQL 2005 列转行应用案例 By claro(陈亮) 2008-12-2 转载请包含此信息*/
  2. --test table KuCunMX
  3. If object_id ('KuCunMX') is not NULL
  4. Drop Table KuCunMX
  5. else
  6. Create Table KuCunMX (ShangPinBH varchar(20),ShiJian datetime,KuWeiBH varchar(20),ShuLiang int)
  7. Go
  8. --新建库存表并插入数据
  9. Insert Into KuCunMX
  10. Select '0000000000001',getdate(),'A999990000',1 Union All
  11. Select '0000000000002',getdate(),'A999990000',2 Union All
  12. Select '0000000000003',getdate(),'A999990000',3 Union All
  13. Select '0000000000004',getdate(),'A999990000',4 Union All
  14. Select '0000000000005',getdate(),'A999990000',5 Union All
  15. Select '0000000000006',getdate(),'E050000000',6 Union All
  16. Select '0000000000007',getdate(),'E050000000',7 Union All
  17. Select '0000000000008',getdate(),'E050000000',8 Union All
  18. Select '0000000000009',getdate(),'E050000000',9 Union All
  19. Select '0000000000010',getdate(),'E050000000',10
  20. --Select * From KuCunMX
  21. /*ShangPinBH    ShiJian                 KuWeiBH     ShuLiang
  22. 0000000000001   2008-12-02 23:42:11.543 A999990000  1
  23. 0000000000002   2008-12-02 23:42:11.543 A999990000  2
  24. 0000000000003   2008-12-02 23:42:11.543 A999990000  3
  25. 0000000000004   2008-12-02 23:42:11.543 A999990000  4
  26. 0000000000005   2008-12-02 23:42:11.543 A999990000  5
  27. 0000000000006   2008-12-02 23:42:11.543 E050000000  6
  28. 0000000000007   2008-12-02 23:42:11.543 E050000000  7
  29. 0000000000008   2008-12-02 23:42:11.543 E050000000  8
  30. 0000000000009   2008-12-02 23:42:11.543 E050000000  9
  31. 0000000000010   2008-12-02 23:42:11.543 E050000000  10
  32. */
  33. --预订储位的库存信息列转行
  34. Select ShangPinBH,ISNULL(A999990000,0) A999990000,ISNULL(E050000000,0) E050000000
  35. from (Select ShangPinBH,KuWeiBH,ShuLiang from KuCunMX ) a pivot (max(ShuLiang) for KuWeiBH
  36. in (A999990000,E050000000)) b
  37. /*
  38. ShangPinBH  A999990000  E050000000
  39. 0000000000001   1   0
  40. 0000000000002   2   0
  41. 0000000000003   3   0
  42. 0000000000004   4   0
  43. 0000000000005   5   0
  44. 0000000000006   0   6
  45. 0000000000007   0   7
  46. 0000000000008   0   8
  47. 0000000000009   0   9
  48. 0000000000010   0   10
  49. */
  50. --test table ShangPin
  51. If object_id('ShangPin') is not NULL
  52. Drop Table ShangPin
  53. Else
  54. Create table ShangPin (ShangPinBH varchar(20),ShiJian datetime,ShangPinMC varchar(20),ISBN varchar(20),DingJia float)
  55. Go
  56. --新建商品表并插入数据
  57. Insert into ShangPin
  58. Select '0000000000001',getdate(),'SQL2000入门经典','7-1111-1111-1',10 Union All
  59. Select '0000000000002',getdate(),'SQL2005入门经典','7-1111-1111-2',20 Union All
  60. Select '0000000000003',getdate(),'SQL2008入门经典','7-1111-1111-3',30 Union All
  61. Select '0000000000004',getdate(),'OFFICE97入门经典','7-1111-1111-4',40 Union All
  62. Select '0000000000005',getdate(),'OFFICE2000入门经典','7-1111-1111-5',50 Union All
  63. Select '0000000000006',getdate(),'OFFICE2003入门经典','7-1111-1111-6',60 Union All
  64. Select '0000000000007',getdate(),'OFFICE2007入门经典','7-1111-1111-7',70 Union All
  65. Select '0000000000008',getdate(),'C#.NET入门经典','7-1111-1111-8',70 Union All
  66. Select '0000000000009',getdate(),'Java入门经典','7-1111-1111-9',90 Union All
  67. Select '0000000000010',getdate(),'正则表达式必知必会','7-1111-1111-0',100
  68. --select * from shangpin
  69. /*
  70. ShangPinBH      ShiJian                 ShangPinMC          ISBN            DingJia
  71. 0000000000001   2008-12-02 23:47:30.107 SQL2000入门经典     7-1111-1111-1   10
  72. 0000000000002   2008-12-02 23:47:30.107 SQL2005入门经典     7-1111-1111-2   20
  73. 0000000000003   2008-12-02 23:47:30.107 SQL2008入门经典     7-1111-1111-3   30
  74. 0000000000004   2008-12-02 23:47:30.107 OFFICE97入门经典    7-1111-1111-4   40
  75. 0000000000005   2008-12-02 23:47:30.107 OFFICE2000入门经典  7-1111-1111-5   50
  76. 0000000000006   2008-12-02 23:47:30.107 OFFICE2003入门经典  7-1111-1111-6   60
  77. 0000000000007   2008-12-02 23:47:30.107 OFFICE2007入门经典  7-1111-1111-7   70
  78. 0000000000008   2008-12-02 23:47:30.107 C#.NET入门经典      7-1111-1111-8   70
  79. 0000000000009   2008-12-02 23:47:30.107 Java入门经典        7-1111-1111-9   90
  80. 0000000000010   2008-12-02 23:47:30.107 正则表达式必知必会   7-1111-1111-0   100
  81. */
  82. --(行列转换)显示预订储位的库存信息和商品信息
  83. Select sp.ShangPinBH,sp.ShangPinMC,mx11.特殊储位A999990000,mx11.特殊储位E050000000
  84. from ShangPin sp
  85. INNER JOIN (Select ShangPinBH,ISNULL(A999990000,0) 特殊储位A999990000,ISNULL(E050000000,0) 特殊储位E050000000
  86. from (Select ShangPinBH,KuWeiBH,ShuLiang from KuCunMX ) a pivot (max(ShuLiang) For KuWeiBH in (A999990000,E050000000)) b) mx11
  87. on sp.ShangPinBH=mx11.ShangPinBH
  88. /*
  89. ShangPinBH      ShangPinMC          特殊储位A999990000  特殊储位E050000000
  90. 0000000000001   SQL2000入门经典     1   0
  91. 0000000000002   SQL2005入门经典     2   0
  92. 0000000000003   SQL2008入门经典     3   0
  93. 0000000000004   OFFICE97入门经典    4   0
  94. 0000000000005   OFFICE2000入门经典  5   0
  95. 0000000000006   OFFICE2003入门经典  0   6
  96. 0000000000007   OFFICE2007入门经典  0   7
  97. 0000000000008   C#.NET入门经典      0   8
  98. 0000000000009   Java入门经典        0   9
  99. 0000000000010   正则表达式必知必会   0   10
  100. */
  101. --END--go sleeping
  102. --test table JinHuoD
  103. If object_id ('JinHuoD') is not NULL
  104. Drop Table JinHuoD
  105. else
  106. Create Table JinHuoD (JinHuoDBH varchar(20),ShiJian datetime,caozuoy varchar(20))
  107. Go
  108. --新建进货单表并插入数据
  109. Insert Into JinHuoD
  110. Select 'JH2008120300001',getdate(),'admin' Union All
  111. Select 'JH2008120200002',getdate()-1,'admin' Union All
  112. Select 'JH2008120100003',getdate()-2,'admin'
  113. --select * from JinHuoD
  114. /*
  115. JinHuoDBH       ShiJian                 caozuoy
  116. JH2008120300001 2008-12-03 10:23:57.513 admin
  117. JH2008120200002 2008-12-02 10:23:57.513 admin
  118. JH2008120100003 2008-12-01 10:23:57.513 admin
  119. */
  120. --test table JinHuoDMX
  121. If object_id ('JinHuoDMX') is not NULL
  122. Drop Table JinHuoDMX
  123. else
  124. Create Table JinHuoDMX (JinHuoDBH varchar(20),JinHuoDMXBH varchar(40),ShangPinBH varchar(20),FuHeSL int)
  125. Go
  126. --新建进货单明细表并插入数据
  127. Insert Into JinHuoDMX
  128. Select 'JH2008120300001','JH200812030000101','0000000000001',1 Union All
  129. Select 'JH2008120300001','JH200812030000102','0000000000002',2 Union All
  130. Select 'JH2008120300001','JH200812030000103','0000000000005',12 Union All
  131. Select 'JH2008120300001','JH200812030000104','0000000000004',4 Union All
  132. Select 'JH2008120300001','JH200812030000105','0000000000005',5 Union All
  133. Select 'JH2008120300001','JH200812030000106','0000000000006',6 Union All
  134. Select 'JH2008120300001','JH200812030000108','0000000000008',8 Union All
  135. Select 'JH2008120300001','JH200812030000109','0000000000008',11 Union All
  136. Select 'JH2008120300001','JH200812030000110','0000000000010',10 Union All
  137. Select 'JH2008120200002','JH200812020000201','0000000000003',1 Union All
  138. Select 'JH2008120200002','JH200812020000202','0000000000001',2 Union All
  139. Select 'JH2008120100003','JH200812010000301','0000000000009',111
  140. --select * from JinHuoDMX
  141. /*
  142. JinHuoDBH       JinHuoDMXBH         ShangPinBH      FuHeSL
  143. JH2008120300001 JH200812030000101   0000000000001   1
  144. JH2008120300001 JH200812030000102   0000000000002   2
  145. JH2008120300001 JH200812030000103   0000000000005   12
  146. JH2008120300001 JH200812030000104   0000000000004   4
  147. JH2008120300001 JH200812030000105   0000000000005   5
  148. JH2008120300001 JH200812030000106   0000000000006   6
  149. JH2008120300001 JH200812030000108   0000000000008   8
  150. JH2008120300001 JH200812030000109   0000000000008   11
  151. JH2008120300001 JH200812030000110   0000000000010   10
  152. JH2008120200002 JH200812020000201   0000000000003   1
  153. JH2008120200002 JH200812020000202   0000000000001   2
  154. JH2008120100003 JH200812010000301   0000000000009   111
  155. */
  156. --显示预订储位的库存信息,显示第一次进货时间
  157. Select sp.ShangPinBH,sp.ShangPinMC,mx11.特殊储位A999990000,mx11.特殊储位E050000000,
  158. ISNULL(CONVERT(VARCHAR(100),ys1.DaoHuoRQ,23),'无进货史') 第一次进货日期
  159. from ShangPin sp
  160. INNER JOIN (Select ShangPinBH,ISNULL(A999990000,0) 特殊储位A999990000,ISNULL(E050000000,0) 特殊储位E050000000
  161. from (Select ShangPinBH,KuWeiBH,ShuLiang from KuCunMX ) a pivot (max(ShuLiang)
  162. For KuWeiBH in (A999990000,E050000000)) b) mx11
  163. on sp.ShangPinBH=mx11.ShangPinBH
  164. LeFT JOIN (Select mx21.ShangPinBH,MIN(ys.ShiJian) DaoHuoRQ
  165. from JinHuoD ys
  166. INNER JOIN JinHuoDMX mx21 on mx21.JinHuoDBH=ys.JinHuoDBH
  167. Group By mx21.ShangPinBH) ys1
  168. on ys1.ShangPinBH=sp.ShangPinBH
  169. /*
  170. ShangPinBH      ShangPinMC          特殊储位A999990000  特殊储位E050000000  第一次进货日期
  171. 0000000000001   SQL2000入门经典     1                   0                   2008-12-02
  172. 0000000000002   SQL2005入门经典     2                   0                   2008-12-03
  173. 0000000000003   SQL2008入门经典     3                   0                   2008-12-02
  174. 0000000000004   OFFICE97入门经典    4                   0                   2008-12-03
  175. 0000000000005   OFFICE2000入门经典  5                   0                   2008-12-03
  176. 0000000000006   OFFICE2003入门经典  0                   6                   2008-12-03
  177. 0000000000007   OFFICE2007入门经典  0                   7                   无进货史
  178. 0000000000008   C#.NET入门经典      0                   8                   2008-12-03
  179. 0000000000009   Java入门经典        0                   9                   2008-12-01
  180. 0000000000010   正则表达式必知必会   0                   10                  2008-12-03
  181. */
  182. --显示预订储位的库存信息和商品信息以及第一次进货时间和累计进货数量
  183. Select sp.ShangPinBH,sp.ShangPinMC,mx11.特殊储位A999990000,mx11.特殊储位E050000000,
  184. ISNULL(CONVERT(VARCHAR(100),ys1.DaoHuoRQ,23),'无进货史') 第一次进货日期,
  185. ISNULL(ys2.yanshoul,0) 累计进货数量
  186. from ShangPin sp
  187. INNER JOIN (Select ShangPinBH,ISNULL(A999990000,0) 特殊储位A999990000,ISNULL(E050000000,0) 特殊储位E050000000
  188. from (Select ShangPinBH,KuWeiBH,ShuLiang from KuCunMX ) a pivot (max(ShuLiang)
  189. For KuWeiBH in (A999990000,E050000000)) b) mx11
  190. on sp.ShangPinBH=mx11.ShangPinBH
  191. LeFT JOIN (Select mx21.ShangPinBH,MIN(ys.ShiJian) DaoHuoRQ
  192. from JinHuoD ys
  193. INNER JOIN JinHuoDMX mx21 on mx21.JinHuoDBH=ys.JinHuoDBH
  194. Group By mx21.ShangPinBH) ys1
  195. on ys1.ShangPinBH=sp.ShangPinBH
  196. LeFT JOIN (Select mx31.ShangPinBH,SUM(mx31.FuHeSL) yanshoul
  197. from JinHuoDMX mx31
  198. INNER JOIN JinHuoD ys on mx31.JinHuoDBH=ys.JinHuoDBH
  199. Group By mx31.ShangPinBH) ys2
  200. on ys2.ShangPinBH=sp.ShangPinBH
  201. /*
  202. ShangPinBH      ShangPinMC          特殊储位A999990000  特殊储位E050000000  第一次进货日期 累计进货数量
  203. 0000000000001   SQL2000入门经典     1                   0                   2008-12-02      3
  204. 0000000000002   SQL2005入门经典     2                   0                   2008-12-03      2
  205. 0000000000003   SQL2008入门经典     3                   0                   2008-12-02      1
  206. 0000000000004   OFFICE97入门经典    4                   0                   2008-12-03      4
  207. 0000000000005   OFFICE2000入门经典  5                   0                   2008-12-03      17
  208. 0000000000006   OFFICE2003入门经典  0                   6                   2008-12-03      6
  209. 0000000000007   OFFICE2007入门经典  0                   7                   无进货史        0
  210. 0000000000008   C#.NET入门经典      0                   8                   2008-12-03      19
  211. 0000000000009   Java入门经典        0                   9                   2008-12-01      111
  212. 0000000000010   正则表达式必知必会   0                   10                  2008-12-03      10
  213. */
  214. --END

MSSQL 2005 列转行应用案例的更多相关文章

  1. sqlserver 2005列转行

    isnull(stuff((select ',' + d.comname from projemp a left outer join emps c on a.empid = c.empidleft ...

  2. mssql 数据库表行转列,列转行 比较经典

    --行列互转 /******************************************************************************************** ...

  3. 转:MSSQL SERVER行转列 列转行

    SQL Server中行列转换 Pivot UnPivot PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PI ...

  4. Oracle行转列、列转行的Sql语句总结

    多行转字符串 这个比较简单,用||或concat函数可以实现  SQL Code  12    select concat(id,username) str from app_userselect i ...

  5. 做图表统计你需要掌握SQL Server 行转列和列转行

    说在前面 做一个数据统计和分析的项目,每天面对着各种数据,经过存储过程从源表计算汇总后需要写入中间结果表以提高数据使用效率,那么此时就需要用到行转列和列转行. 1.列转行 数据经过计算加工后会直接生成 ...

  6. Oracle行转列、列转行的Sql语句总结(转)

    多行转字符串 这个比较简单,用||或concat函数可以实现 select concat(id,username) str from app_userselect id||username str f ...

  7. SQL 行转列和列转行

    SQL 行转列和列转行 行列互转,是一个经常遇到的需求.实现的方法,有case when方式和2005之后的内置pivot和unpivot方法来实现. 在读了技术内幕那一节后,虽说这些解决方案早就用过 ...

  8. SQL2005语句实现行转列,列转行

    在做报表时,经常需要将数据表中的行转列,或者列转行,如果不知道方法,你会觉得通过SQL语句来实现非常难.这里,我将使用pivot和unpivot来实现看似复杂的功能.这个功能在sql2005及以上版本 ...

  9. sql 行转 列, 列转行

    行列互转 复制代码 create table test(id ),quarter int,profile int) insert into test values(,,) insert into te ...

随机推荐

  1. [Angularjs]ng-file-upload上传文件

    写在前面 最近在弄文档库的H5版,就查找了下相关的上传组件,发现了ng-upload的东东,推荐给大家. 系列文章 [Angularjs]ng-select和ng-options [Angularjs ...

  2. jQuery1.11源码分析(4)-----Sizzle工厂函数[原创]

    在用前两篇讲述完正则表达式.初始化.特性检测之后,终于到了我们的正餐——Sizzle工厂函数! Sizzle工厂函数有四个参数, selector:选择符 context:查找上下文 results: ...

  3. 老码农教你在 StackOverflow 上谈笑风生

    作为一个高大上的码农,你肯定用到过 StackOverflow,必须的.会有人否定这个断言么?那他恐怕不是真正的码农,或者说还没入门.StackOverflow 对于码农的重要性,基本就和诸葛亮对刘备 ...

  4. TYVJ1359 收入计划

    描述     高考结束后,同学们大都找到了一份临时工作,渴望挣得一些零用钱.从今天起,Matrix67将连续工作N天(1<=N<=100 000).每一天末他可以领取当天及前面若干天里没有 ...

  5. Brackets(区间dp)

    Brackets Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3624   Accepted: 1879 Descript ...

  6. index and polymorphic

    http://guides.rubyonrails.org/association_basics.html#polymorphic-associations class CreateStars < ...

  7. angular js 自定义指令

    我们有些时候需要把后台返回过来的带有html标签的字符串binding到界面中一个指定的div或者其他的控制器中. 使用普通ng-bind不会自动解析出html语句. js中这样定义: app.dir ...

  8. 15 day 1代碼

    第一题 用堆维护. #include <cstdio> #include <algorithm> #include <queue> int n,i,f[400000 ...

  9. 【GoLang】GoLang fmt 占位符详解

    golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. # 定义示例类型和变量 type Human struct { Name string } var peo ...

  10. 【Spring】Spring系列6之Spring整合Hibernate

    6.Spring整合Hibernate 6.1.准备工作 6.2.示例 com.xcloud.entities.book com.xcloud.dao.book com.xcloud.service. ...