create table #T(Code VARCHAR(10),ID INT,Name VARCHAR(10),Dates Datetime,
                COL1 VARCHAR(10),COL2 VARCHAR(10),COL3 VARCHAR(10),
                COL4 VARCHAR(10),COL5 VARCHAR(10),COL6 VARCHAR(10),
                Depart VARCHAR(10))
                
insert into #T select '0007538',2011,'李柔伟','2005-10-03 00:00:00.000',NULL,NULL,NULL,'未签到','未签到','正常','行政'
insert into #T select '0007538',2011,'李柔伟','2005-10-03 00:00:00.000','未签到','未签到','正常',NULL,NULL,NULL,'行政'select
    Code,
    ID,
    Dates,
    max(COL1),max(COL2),max(COL3),max(COL4),max(COL5),max(COL6),
    Depart
from
    #T
group by
    Code,ID,Dates,Depart

解决方案 »

  1.   

    libin_ftsafe(子陌红尘) 的方法可以的,临时表用处很大的
      

  2.   

    create table #T(Code VARCHAR(10),ID INT,Name VARCHAR(10),Dates Datetime,
                    COL1 VARCHAR(10),COL2 VARCHAR(10),COL3 VARCHAR(10),
                    COL4 VARCHAR(10),COL5 VARCHAR(10),COL6 VARCHAR(10),
                    Depart VARCHAR(10))
                    
    insert into #T select '0007538',2011,'李柔伟','2005-10-03 00:00:00.000',NULL,NULL,NULL,'未签到','未签到','正常','行政'
    insert into #T select '0007538',2011,'李柔伟','2005-10-03 00:00:00.000','未签到','未签到','正常',NULL,NULL,NULL,'行政'select
        Code,
        ID,
        Dates,
        max(COL1),max(COL2),max(COL3),max(COL4),max(COL5),max(COL6),
        Depart
    from
        #T
    group by
        Code,ID,Dates,Depart如果不一定是六个字段,可能是三个,六个,或九个
    你是六个字段就用max(COL1),max(COL2),max(COL3),max(COL4),max(COL5),max(COL6)
    你是三个字段就用max(COL1),max(COL2),max(COL3)
    你是九个字段就用max(COL1),max(COL2),max(COL3),max(COL4),max(COL5),max(COL6)...max(col9)
      

  3.   

    没有用临时表,我提供代码里的临时表不过是存放测试数据的容器罢了,用表变量也是一样。在楼主的系统中,以下数据来源何处,临时表就替代该出处:0007538 2011 李柔伟 2005-10-03 00:00:00.000 NULL NULL NULL 未签到 未签到 正常 行政
    0007538 2011 李柔伟 2005-10-03 00:00:00.000 未签到 未签到 正常 NULL NULL NULL 行政
      

  4.   

    declare @t table(Code VARCHAR(10),ID INT,Name VARCHAR(10),Dates Datetime,
                    COL1 VARCHAR(10),COL2 VARCHAR(10),COL3 VARCHAR(10),
                    COL4 VARCHAR(10),COL5 VARCHAR(10),COL6 VARCHAR(10),
                    Depart VARCHAR(10))
                    
    insert into @t select '0007538',2011,'李柔伟','2005-10-03 00:00:00.000',NULL,NULL,NULL,'未签到','未签到','正常','行政'
    insert into @t select '0007538',2011,'李柔伟','2005-10-03 00:00:00.000','未签到','未签到','正常',NULL,NULL,NULL,'行政'select
        Code,
        ID,
        Dates,
        max(COL1),max(COL2),max(COL3),max(COL4),max(COL5),max(COL6),
        Depart
    from
        @t
    group by
        Code,ID,Dates,Depart
      

  5.   

    SQL Server 在内部为每个本地临时表的表名追加一个数字后缀。存储在 tempdb 数据库的 sysobjects 表中的临时表可将函数和变量声明为 table 类型。table 变量可用于函数、存储过程和批处理中。尽可能使用表变量而不使用临时表。table 变量有以下优点: table 变量的行为类似于局部变量,有明确定义的作用域。该作用域为声明该变量的函数、存储过程或批处理。 
    在其作用域内,table 变量可像常规表那样使用。该变量可应用于 SELECT、INSERT、UPDATE 和 DELETE 语句中用到表或表的表达式的地方。但是,table 不能用在下列语句中:INSERT INTO table_variable EXEC 存储过程。SELECT select_list INTO table_variable 语句。在定义 table 变量的函数、存储过程或批处理结束时,自动清除 table 变量。在存储过程中使用表变量与使用临时表相比,减少了存储过程的重新编译量。