表号  项目  结论
1     起动   合格
1     潜动   不合格
2     起动   不合格
2     潜动   不合格把这个表用一个Sql语句查出为另一个表,结果为:
表号  起动    潜动
1     合格   不合格
2    不合格  不合格这个Sql语句应该如何写呢?小弟拜求!

解决方案 »

  1.   

    --建立测试环境
    set nocount on
    create table test(表号 varchar(20),项目 varchar(20),结论 varchar(20))
    insert into test select '1','起动','合格'
    insert into test select '1','潜动','不合格'
    insert into test select '2','起动','不合格'
    insert into test select '2','潜动','不合格'
    go
    --测试
    select 表号,
    max(case when 项目='起动' then 结论 else '' end)起动,
    max(case when 项目='潜动' then 结论 else '' end)潜动
     from test
    group by 表号
    --删除测试环境
    drop table test
     set nocount off
      

  2.   

    create table tb(表号 int, 项目 varchar(10), 结论 varchar(10))
    insert into tb select 1,'起动','合格'
    insert into tb select 1,'潜动','不合格'
    insert into tb select 2,'起动','不合格'
    insert into tb select 2,'潜动','不合格'select 表号,
    max(case when 项目='起动' then 结论 end) as '起动',
    max(case when 项目='潜动' then 结论 end) as '潜动'
    from tb 
    group by 表号declare @sql varchar(8000)
    select @sql=isnull(@sql+',','')+'max(case when 项目='''+项目+''' then 结论 end) as ['+项目+']'
    from (select distinct 项目 from tb)tp
    exec('select 表号,'+@sql+' from tb group by 表号')表号 起动 潜动
    1 合格 不合格
    2 不合格 不合格
      

  3.   


    //linq 我就会
    //把表的数据放到dataset中
    //然后设置好关系
    var query = from tmp表1 in dataset1.表1
                join tmp表2 in dataset1.表2
                on tmp表1.表号 equals tmp表2.表号
                  select new{tmp表2.表号,
                           tmp表2.起动,
                           tmp表2.潜动
                              }