工作内容           计下单开始时间             绣花下单开始时间                          
2007年鸟语花香样板设计   2006-10-28 11:23:09  NULL
2007年鸟语花香样板设计   NULL                 2006-10-31 00:00:00

解决方案 »

  1.   

    if object_id('pubs..test') is not null
       drop table test
    go create table test
    (
    工作内容         varchar(30),
    计下单开始时间   datetime,
    绣花下单开始时间 datetime
    )
    insert into test(工作内容,计下单开始时间,绣花下单开始时间) values('2007年鸟语花香样板设计','2006-10-28 11:23:09',null)
    insert into test(工作内容,计下单开始时间,绣花下单开始时间) values('2007年鸟语花香样板设计',null,'2006-10-31 00:00:00')select 工作内容,max(计下单开始时间) as 计下单开始时间 , max(绣花下单开始时间) as 绣花下单开始时间 from test group by 工作内容drop table test--结果
    工作内容               计下单开始时间          绣花下单开始时间       
    ---------------------- ----------------------- -----------------------
    2007年鸟语花香样板设计 2006-10-28 11:23:09.000 2006-10-31 00:00:00.000(所影响的行数为 1 行)
      

  2.   

    select 工作内容,sum(isnull(计下单开始时间,0)),sum(isnull(绣花下单开始时间,0)) from tb group by 工作内容
      

  3.   

    Softlee81307(孔腎)日期或字符类型的数据不能用sum吧?
      

  4.   

    dawugui(潇洒老乌龟) 大哥是行列转换工作内容              工序             开始时间                      
    2007年鸟语花香样板设计   计下单          2006-10-28 11:23:09
    2007年鸟语花香样板设计   绣花下单         2006-10-31 00:00:00
    2007年鸟语花香样板设计   样衣下单         2006-11-2 00:00:00
    意思就是一项工作有多个步骤,每个步骤有个开始时间,
    希望步骤在表头显示,
      

  5.   

    create table tb(content nvarchar(50), [order] nvarchar(10), bgTime datetime)
    insert tb select '2007年鸟语花香样板设计', '计下单', '2006-10-28 11:23:09'
    union all select '2007年鸟语花香样板设计',   '绣花下单',        '2006-10-31 00:00:00'
    union all select '2007年鸟语花香样板设计', '開始',           '2006-11-07 10:00:00'
    declare @sql nvarchar(4000)
    set @sql=' select content, '
    select @sql=@sql + quotename([order]) + '=''' + cast(bgTime as varchar) +''',' from tb
    set @sql=left(@sql, len(@sql)-1)
    set @sql=@sql+' from tb group by content'
    exec(@sql)drop table tb
      

  6.   

    if object_id('pubs..test') is not null
       drop table test
    go create table test
    (
    工作内容         varchar(30),
    工序             varchar(30),
    开始时间 datetime
    )
    insert into test(工作内容,工序,开始时间) values('2007年鸟语花香样板设计','计下单'  ,'2006-10-28 11:23:09')
    insert into test(工作内容,工序,开始时间) values('2007年鸟语花香样板设计','绣花下单','2006-10-31 00:00:00')
    insert into test(工作内容,工序,开始时间) values('2007年鸟语花香样板设计','样衣下单','2006-11-02 00:00:00')declare @sql varchar(8000)
    set @sql = ''
    --select @sql = @sql + ',[' + 工序 + '] = max(case 工序 when ''' + 工序 + ''' then 开始时间 else null end)' 
    select @sql = @sql + ', max(case when 工序 =  ''' + 工序 + ''' then 开始时间 else null end) as ' + 工序 + '开始时间'
    from test group by 工序 order by 工序 desc
    set @sql = 'select 工作内容' + @sql + ' from test group by 工作内容'
    EXEC(@sql)drop table test--结果
    工作内容               样衣下单开始时间        绣花下单开始时间        计下单开始时间         
    ---------------------- ----------------------- ----------------------- -----------------------
    2007年鸟语花香样板设计 2006-11-02 00:00:00.000 2006-10-31 00:00:00.000 2006-10-28 11:23:09.000