• 主页
  • 基础类
  • 应用实例
  • 新技术前沿

急,动态统计生成列的问题

singleflower 2006-11-02 04:58:33
表中数据:
岗位ID 岗位 身份证 姓名 变更类型ID 变更类型 变更时间
001 总监 410xx 车庆秋 001 投标承诺人员 2006-11-01
001 总监 510xx 陈家健 002 实际进场人员 2006-11-01
002 总监代表 310xx 邓向阳 001 投标承诺人员 2006-11-01
002 总监代表 51xxx 董中男 002 实际进场人员 2006-11-01
002 总监代表 5xxxx YYYY 003 第一次变更 2006-11-01

要求结果集如下:
投标承诺人员 实际进场人员 第一次变更
岗位ID 岗位 身份证 姓名 身份证 姓名 身份证 姓名
001 总监 410xx 车庆秋 510xx 陈家健
002 总监代表 310xx 邓向阳 51xxx 董中男 5xxxx YYYY
这个要怎么写语句?
...全文
153 点赞 收藏 7
写回复
7 条回复
singleflower 2006年11月02日
老大们果然牛,谢谢libin_ftsafe(子陌红尘:当libin告别ftsafe) 了

结贴。
回复 点赞
zlp321002 2006年11月02日
表头,用前台程序中

write.Write("<table width=372 border=0 align=center cellpadding=0 cellspacing=0> ");
...
的方法去构造. 其中需要重写:
protected override void Render(HtmlTextWriter write)

.net 估计就这么用的.

数据提取.就用libin_ftsafe(子陌红尘:当libin告别ftsafe) 的了.

回复 点赞
being21 2006年11月02日
呵呵,楼上在这里写了这么多,是不是给我也写一点!!!
回复 点赞
子陌红尘 2006年11月02日
因为不支持双表头,输出结果有些乱,楼主自己看吧。
回复 点赞
子陌红尘 2006年11月02日
create table test(
岗位ID varchar(10),
岗位 varchar(10),
身份证 varchar(10),
姓名 varchar(10),
变更类型ID varchar(10),
变更类型 varchar(20),
变更时间 datetime)

insert into test select '001','总监 ','410xx','车庆秋','001','投标承诺人员','2006-11-01'
insert into test select '001','总监 ','510xx','陈家健','002','实际进场人员','2006-11-01'
insert into test select '002','总监代表','310xx','邓向阳','001','投标承诺人员','2006-11-01'
insert into test select '002','总监代表','51xxx','董中男','002','实际进场人员','2006-11-01'
insert into test select '002','总监代表','5xxxx','YYYY ','003','第一次变更 ','2006-11-01'
go

declare @sql varchar(8000)
set @sql='select 岗位ID,岗位'
select @sql=@sql+',['+变更类型+'身份证]=max(case 变更类型 when '''+变更类型+''' then 身份证 else '''' end)'
+',['+变更类型+'姓名] =max(case 变更类型 when '''+变更类型+''' then 姓名 else '''' end)'
from test group by 变更类型,变更类型ID order by 变更类型ID
set @sql=@sql+' from test group by 岗位ID,岗位'

exec(@sql)
go

/*
岗位ID 岗位 投标承诺人员身份证 投标承诺人员姓名 实际进场人员身份证 实际进场人员姓名 第一次变更 身份证 第一次变更 姓名
---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
001 总监 410xx 车庆秋 510xx 陈家健
002 总监代表 310xx 邓向阳 51xxx 董中男 5xxxx YYYY
*/

drop table test
go
回复 点赞
子陌红尘 2006年11月02日
create table test(
岗位ID varchar(10),岗位 varchar(10),身份证 varchar(10),
姓名 varchar(10),变更类型ID varchar(10),变更类型 varchar(20),变更时间 datetime)

insert into test select '001','总监 ','410xx','车庆秋','001','投标承诺人员','2006-11-01'
insert into test select '001','总监 ','510xx','陈家健','002','实际进场人员','2006-11-01'
insert into test select '002','总监代表','310xx','邓向阳','001','投标承诺人员','2006-11-01'
insert into test select '002','总监代表','51xxx','董中男','002','实际进场人员','2006-11-01'
insert into test select '002','总监代表','5xxxx','YYYY ','003','第一次变更 ','2006-11-01'
go

declare @sql varchar(8000)
set @sql='select 岗位ID,岗位'
select @sql=@sql+',['+变更类型+'身份证]=max(case 变更类型 when '''+变更类型+''' then 身份证 else '''' end)'
+',['+变更类型+'姓名] =max(case 变更类型 when '''+变更类型+''' then 姓名 else '''' end)'
from test group by 变更类型
set @sql=@sql+' from test group by 岗位ID,岗位'

exec(@sql)
go

drop table test
go
回复 点赞
dawugui 2006年11月02日
你能不能数据整理规范点,看不懂啊.
回复 点赞
发动态
发帖子
MS-SQL Server
创建于2007-09-28

1.4w+

社区成员

25.3w+

社区内容

MS-SQL Server相关内容讨论专区
社区公告
暂无公告