select 日期,
max(case when 项目='早餐' then '内容' end) 早餐,
max(case when 项目='中餐' then '内容' end) 中餐,
max(case when 项目='晚餐' then '内容' end) 晚餐,
max(case when 项目='加餐' then '内容' end) 加餐
from 一张表 group by 日期
max(case when 项目='早餐' then '内容' end) 早餐,
max(case when 项目='中餐' then '内容' end) 中餐,
max(case when 项目='晚餐' then '内容' end) 晚餐,
max(case when 项目='加餐' then '内容' end) 加餐
from 一张表 group by 日期
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)
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 日期
如果是别的数据库该怎么办??
"(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
在原问题的基础上,添加了字段"加餐", 以使问题更有通用性;
以上代码在 Access 数据库中, 在 ASP 环境下验证通过.