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. 如何使用vim的帮助功能

    set guioptions+-=m/T 更换vim的默认color schema: 将下载的color.vim文件如sonofob'sidian.vim放到/usr/share/vim/vimfil ...

  2. 后台返回json数据,前台显示代码

    List list = "从DAL获取的数据集合" //取出分页标签html int pageIndex = context.Request["pageIndex&quo ...

  3. js检测是否安装了flash插件

    function flashChecker() { var hasFlash = 0; //是否安装了flash var flashVersion = 0; //flash版本 var isIE = ...

  4. 台大《机器学习基石》课程感受和总结---Part 2 (转)

    转自:http://blog.sina.com.cn/s/blog_641289eb0101e2ld.html Part 2总结一下一个粗略的建模过程: 首先,弄清楚问题是什么,能不能用机器学习的思路 ...

  5. Android判断网络是否连接

    <!-- 配置文件判断网络是否连接 --> <uses-permission android:name="android.permission.ACCESS_NETWORK ...

  6. linux awk 内置函数详细介绍(实例)

    这节详细介绍awk内置函数,主要分以下3种类似:算数函数.字符串函数.其它一般函数.时间函数 一.算术函数: 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y ...

  7. ubuntu创建文件夹快捷方式命令

    sudo ln -sT /path/to/source/directory  /path/to/destination/directory 注意路径一定要用 绝对路径 例: /site-package ...

  8. (转)Sublime Text 2 2.0.2 序列号

    ----- BEGIN LICENSE -----Andrew WeberSingle User LicenseEA7E-855605813A03DD 5E4AD9E6 6C0EEB94 BC9979 ...

  9. iOS 如何使用自定义字体

    首先,你需要有字体文件,比如 xxx.otf,之后你需要到工程的info配置文件中加入Fonts provided by application的值,如下图 之后,就可以使用字体名和UIFont的方法 ...

  10. iOS 中通过使用Google API获得Google服务

    最近使用了google drive这个云存储,官方指导网址为 https://developers.google.com/drive/ios/ . 官方库代码网址为 http://code.googl ...