declare @tb table(fid int,hid int,sid int,td1 int,td2 int,td3 int,td4 int)
insert into @tb select 1,2,4,11,22,null,null
insert into @tb select 1,2,5,null,null,33,44select fid,hid,
isnull(max(td1),min(td1)) as td1,
isnull(max(td2),min(td2)) as td2,
isnull(max(td3),min(td3)) as td3,
isnull(max(td4),min(td4)) as td4
from @tb 
group by fid,hidfid hid td1 td2 td3 td4
1 2 11 22 33 44

解决方案 »

  1.   

    如果有10行,那估计要嵌套10个isnull...
      

  2.   

    DECLARE @t TABLE(fid int,hid int,sid int,td1 int,td2 int,td3 int,td4 int)
    INSERT @t SELECT 1,    2 , 4,    11  ,  22 , null,  null 
    UNION ALL SELECT 1 ,   2,  5 ,   null , null,  33 ,   44 
    UNION ALL SELECT 1,    2,  1,  24,null,null,null
    UNION ALL SELECT 2,    1, null,2,1,1,1SELECT fid,hid,(SELECT TOP 1 td1 FROM @t WHERE fid=a.fid AND hid=a.hid AND td1 IS NOT NULL) td1 /*td2,td3,td4类同*/ FROM @t a
    GROUP BY fid,hid或者使用动态语购建COALESCE
      

  3.   

    b/s开发(.net)。 或数据库开发吧。
    小公司的开发部门管理也可以。
    呵呵,
      

  4.   

    好的。
    但是我现在有点事,要出去一下。
    我的qq 578082
    msn:[email protected]如果方便的话,请你加我。 
      

  5.   

    为什么不用sum呢,迷惑ing......
      

  6.   

    select fid,hid,td1=sum(td1),td2=sum(td2),td3=sum(td3),td4=sum(td4) from tb group by fid,hidselect fid,hid,td1=max(td1),td2=max(td2),td3=max(td3),td4=max(td4) from tb group by fid,hidselect fid,hid,td1=min(td1),td2=min(td2),td3=min(td3),td4=min(td4) from tb group by fid,hidselect fid,hid,td1=avg(td1),td2=avg(td2),td3=avg(td3),td4=avg(td4) from tb group by fid,hid
      

  7.   

    就楼主的测试数据的话.使用SUM当然可以,但是楼主的实际数据要是td1都不会空呢.那么使用SUM就有问题.这个存在一点岐义.楼主要是说明白一点,或者多给一点测试数据,清楚了.