表中数据:
岗位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
这个要怎么写语句?

解决方案 »

  1.   

    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' 
    godeclare @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)
    godrop table test
    go
      

  2.   

    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' 
    godeclare @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
      

  3.   

    表头,用前台程序中write.Write("<table width=372 border=0 align=center cellpadding=0 cellspacing=0> ");
    ...
    的方法去构造. 其中需要重写:
    protected override void Render(HtmlTextWriter write).net 估计就这么用的.数据提取.就用libin_ftsafe(子陌红尘:当libin告别ftsafe) 的了.
      

  4.   

    老大们果然牛,谢谢libin_ftsafe(子陌红尘:当libin告别ftsafe) 了结贴。