select 日期,
max(case when 项目='早餐' then '内容' end) 早餐,
max(case when 项目='中餐' then '内容' end) 中餐,
max(case when 项目='晚餐' then '内容' end) 晚餐,
max(case when 项目='加餐' then '内容' end) 加餐
from 一张表 group by 日期

解决方案 »

  1.   

    select 日期,
    max(case when 项目='早餐' then '内容' end) 早餐,
    max(case when 项目='中餐' then '内容' end) 中餐,
    max(case when 项目='晚餐' then '内容' end) 晚餐,
    max(case when 项目='加餐' then '内容' end) 加餐
    from 一张表 group by 日期
    ORdeclare @sql varchar(8000)
    set @sql = 'select 日期'
    select @sql = @sql + 'max(case 项目 when '''+项目+''' 
                              then 内容 end) '+项目+','
      from (select distinct 项目 from 一张表) as aselect @sql = left(@sql,len(@sql)-1) + ' from 一张表 group by 日期'exec(@sql)
      

  2.   

    select 日期,
    max(case 项目 when '早餐' then 内容 else '' end) 早餐,
    max(case 项目 when '中餐' then 内容 else '' end) 中餐,
    max(case 项目 when '晚餐' then 内容 else '' end) 晚餐,
    max(case 项目 when '加餐' then 内容 else '' end) 加餐
    from ypurtable group by 日期
      

  3.   

    上边几位, 是在 SQL Server 中吗?  Access2000 支持吗?
    如果是别的数据库该怎么办??
      

  4.   

    是在 SQL Server 中,access中好象不行,因为好象不能用CASE.
      

  5.   

    Dim sSQL, rs  sSQL="select a.rq, " &_
      "(select b.f3 from items b where b.f2='早餐' and b.rq=a.rq) as zao, " & _
      "(select c.f3 from items c where c.f2='中餐' and c.rq=a.rq) as zhong, " & _
      "(select d.f3 from items d where d.f2='晚餐' and d.rq=a.rq) as wan, " & _
      "(select e.f3 from items e where e.f2='加餐' and e.rq=a.rq) as jia " & _
      "from items a group by rq"
      Set rs = Server.CreateObject("ADODB.Recordset")
      rs.Open sSQL, sConn, 1, 1  while not rs.eof
        'response.write rs("zao") + "--" + rs("zhong") + "--" + rs("wan") + "--" + rs("jia") +"<br>"
        response.write rs("rq") & "--" & rs("zao") & "--" & rs("zhong")& "--" & rs("wan") & "--" & rs("jia") & "<br>"
        'response.write rs("rq") & "--" & rs("f") & "<br>"
        rs.movenext
      wend
      

  6.   

    以上问题补充:
    在原问题的基础上,添加了字段"加餐", 以使问题更有通用性;
    以上代码在 Access 数据库中, 在 ASP 环境下验证通过.