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

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
这个要怎么写语句?
...全文
202 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
你能不能数据整理规范点,看不懂啊.

34,571

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧