如果是sqlserver的话,有行转列  PIVOT
http://www.cnblogs.com/zhangzt/archive/2010/07/29/1787825.html

解决方案 »

  1.   

    sqlserver   -->
    isnumeric(xxx)<>0 then xxxxx  else    ' ' 假如星期是动态的 不是固定 的怎么写。
      

  2.   

    else 0 。写成else '' 不就行了么。。
      

  3.   

    select 教师号,sum(CASE 星期号 WHEN 1 THEN 1 ELSE 0 END) AS 星期号1,
        sum(CASE 星期号 WHEN 2 THEN 1 ELSE 0 END) AS 星期号2,
        sum(CASE 星期号 WHEN 3 THEN 1 ELSE 0 END) AS 星期号3
    FROM 课程表 group by 教师号语句中的0改成“”不行吗?
      

  4.   

    oracle里有个decode函数,不过你的是SqlServer,那只能用union all
      

  5.   

    select name,sum(CASE week WHEN 1 THEN 1 ELSE null END) AS 星期号1,
        sum(CASE week WHEN 2 THEN 1 ELSE null END) AS 星期号2,
        sum(CASE week WHEN 3 THEN 1 ELSE null END) AS 星期号3
    FROM testhu group by name
      

  6.   

    select 教师号,sum(CASE 星期号 WHEN 1 THEN 1 ELSE null END) AS 星期一,
        sum(CASE 星期号 WHEN 2 THEN 1 ELSE null END) AS 星期二,
        sum(CASE 星期号 WHEN 3 THEN 1 ELSE null END) AS 星期三
    FROM testhu group by 教师号
      

  7.   

    如果是用mysql 这个肯定是你想要的结果
    SELECT 
    aa.teacher_id,
    IF(SUM(CASE aa.day_num WHEN 1 THEN 1 ELSE 0 END)=0,'',SUM(CASE aa.day_num WHEN 1 THEN 1 ELSE NULL END)) AS 星期1,
    IF(SUM(CASE aa.day_num WHEN 2 THEN 1 ELSE 0 END)=0,'',SUM(CASE aa.day_num WHEN 2 THEN 1 ELSE NULL END)) AS 星期2,
    IF(SUM(CASE aa.day_num WHEN 3 THEN 1 ELSE 0 END)=0,'',SUM(CASE aa.day_num WHEN 3 THEN 1 ELSE NULL END)) AS 星期3
    FROM (
    SELECT 
    teacher_id,
    day_num,
    is_free
    FROM test
    WHERE is_free =1
    ) AS aa GROUP BY aa.teacher_id