有个记录表T1:姓名 日期  语文 数学 英语
----|----|---|---|-----
张三  周一  好  -   -
张三  周一  -  好   -
张三  周一  -  -   好
张三  周二  好  -   -
张三  周二  -  -   好
李四  周一  -  好   -
李四  周一  好  -   -
...
想得到结果,按姓名和日期汇总:姓名 日期  语文 数学 英语
----|----|---|---|-----
张三  周一  好  好   好
张三  周二  好  -   好
李四  周一  好  好   -
请求 MS的SQL语句 谢谢

解决方案 »

  1.   

    DECLARE @TB TABLE (ANAME VARCHAR(10),ADATE VARCHAR(10),CH VARCHAR(10),MA VARCHAR(10),EN VARCHAR(10))
    INSERT INTO @TB SELECT '张三',  '周一',  '好',  '-' , '-' 
    UNION ALL SELECT '张三'  ,'周一',  '-',  '好',  '-' 
    UNION ALL SELECT '张三'  ,'周一'  ,'-'  ,'-'  ,'好' 
    UNION ALL SELECT '张三'  ,'周二'  ,'好'  ,'-'  ,'-' 
    UNION ALL SELECT '张三'  ,'周二'  ,'-'  ,'-'  ,'好' 
    UNION ALL SELECT '李四'  ,'周一'  ,'-'  ,'好'  ,'-' 
    UNION ALL SELECT '李四'  ,'周一'  ,'好'  ,'-'  ,'-' 
    SELECT ANAME,ADATE,MAX(CH),MAX(MA),MAX(EN) FROM @TB GROUP BY ANAME,ADATE 
    /*
    ANAME      ADATE      CH         MA         EN         
    ---------- ---------- ---------- ---------- ---------- 
    张三         周二         好          -          好
    李四         周一         好          好          -
    张三         周一         好          好          好(所影响的行数为 3 行)
    */
      

  2.   


    select 姓名, 日期,  max(语文) as 语文, max(数学) as 数学, max(英语) as 英语 
    from T1 group by 姓名,日期