本站首页    管理页面    写新日志    退出

The Neurotic Fishbowl

[SQL问题解决]sql纵横排列
麦林 发表于 2007/11/22 17:32:20

原始表数据为: pid      document p001     1号楼第一季度文档 p001     1号楼第二季度文档 p001     1号楼第三季度文档 p001     1号楼第四季度文档 p002     2号楼第一季度文档 p002     2号楼第二季度文档 p002     2号楼第三季度文档 p003     3号楼第一季度文档 p003     3号楼第二季度文档 p003     3号楼第三季度文档 p003     3号楼第四季度文档 建表所用的语句: CREATE TABLE [dbo].[quest] ( [pid] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL , [document] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL  ) ON [PRIMARY] GO insert into quest(pid,document) values( 'p001 ', '1号楼第一季度文档 ') insert into quest(pid,document) values( 'p001 ', '1号楼第二季度文档 ') insert into quest(pid,document) values( 'p001 ', '1号楼第三季度文档 ') insert into quest(pid,document) values( 'p001 ', '1号楼第四季度文档 ') insert into quest(pid,document) values( 'p002 ', '2号楼第一季度文档 ') insert into quest(pid,document) values( 'p002 ', '2号楼第二季度文档 ') insert into quest(pid,document) values( 'p002 ', '2号楼第三季度文档 ') insert into quest(pid,document) values( 'p003 ', '3号楼第一季度文档 ') insert into quest(pid,document) values( 'p003 ', '3号楼第二季度文档 ') insert into quest(pid,document) values( 'p003 ', '3号楼第三季度文档 ') insert into quest(pid,document) values( 'p003 ', '3号楼第四季度文档 ') 实现结果:/*p001 1号楼第一季度文档  1号楼第二季度文档  1号楼第三季度文档  1号楼第四季度文档  p002 2号楼第一季度文档  2号楼第二季度文档  2号楼第三季度文档  NULL p003 3号楼第一季度文档  3号楼第二季度文档  3号楼第三季度文档  3号楼第四季度文档  */ 实现sql语句:方法一:declare @i int,@sql varchar(8000)select @i = max(document), @sql ='' from (select count(document) as document from quest group by pid) t   while @i>0     begin      select @sql=',document'+rtrim(@i)+'= max(case i when '+rtrim(@i)+'then document end)'+@sql,@i=@i-1  endset @sql='select pid'+ @sql +'from (select *,(select count(*) from quest where pid=a.pid and (charindex (substring(document,5,1),''一二三四五六七八九十'')<=charindex(substring(a.document,5,1), ''一二三四五六七 八九十''))) as i from quest a)t group by pid'       exec(@sql) 方法二:select distinct a.pid ,b.document document1 ,c.document document2 ,d.document document3 ,f.document document4 from quest a right join (select pid ,document from quest where substring(document,5,1) = '一') b on b.pid = a.pidleft join (select pid ,document from quest where substring(document,5,1) = '二') c on c.pid = a.pidleft join (select pid ,document from quest where substring(document,5,1) = '三') d on d.pid = a.pidleft join (select pid ,document from quest where substring(document,5,1) = '四') f on f.pid = a.pid

阅读全文(2599) | 回复(0) | 编辑 | 精华

 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
 

The Neurotic Fishbowl

.: 公告

fighting for the work!


Bloginess

«September 2025»
123456
78910111213
14151617181920
21222324252627
282930

.: 我的分类(专题)

首页(449)
文字感悟(103)
学习公共库(61)
生活体会(100)
资源收集(14)
.NET-Winform(27)
音乐文字(15)
心情小记(119)
SQL问题解决(10)


In the Bowl

.: 最新日志

C#打印代码
你看到的我是蓝色的
即将逝去的3月
这个假期
两个月过去
表名存在其他表时获取数据
条码打印
Remoting的用法
INI文件用法


.: 最新回复

回复:条码打印
回复:条码打印
回复:即将逝去的3月
回复:cookie对象使用
回复:条码打印
回复:JSP学习(字符串比较)
回复:应收应付核销规则及常见问题(续)
回复:两个月过去
回复:两个月过去


The Fishkeeper
blog名称:栗色?蓝色?
日志总数:449
评论数量:201
留言数量:37
访问次数:2260523
建立时间:2006年5月16日



Text Me

.: 留言板

签写新留言

链接完成
回:loseVC
来喽~
转转......
新年啦
对自己说
祝福
回:佑手
WO


Other Fish in the Sea

.: 链接


loseVC's BLOG
Collapsar_feel
布衣加针
C#and.Net
Kinogam Web




站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.035 second(s), page refreshed 144790956 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号