ACCESS一对多行,查询时实现一行多列,SQL语句怎么写

 我来答
badkano
2017-04-21 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885369
团长

向TA提问 私信TA
展开全部
select 员工表.姓名,
max(switch(考勤表.日期='周一',出勤,true,'')) as 周一,
max(switch(考勤表.日期='周二',出勤,true,'')) as 周二,
max(switch(考勤表.日期='周三',出勤,true,'')) as 周三,
max(switch(考勤表.日期='周四',出勤,true,'')) as 周四,
max(switch(考勤表.日期='周五',出勤,true,'')) as 周五
from 员工表,考勤表 where 员工表.id=考勤表.员工id
group by 员工表.姓名

节子不哭
2017-07-11 · TA获得超过461个赞
知道小有建树答主
回答量:340
采纳率:85%
帮助的人:165万
展开全部
标准的SQL语法可以这么写,思想上是一样的,实现上有点出入可以自己改一改,我觉得这样查询效率低了好多,为什么要这样的结果呢,
select e.name,
       (select a.attendace from  attendance_table a where a.id =e.id and a.week ='Monday') Monday,
       (select a.attendace from  attendance_table a where a.id =e.id and a.week ='Tuesday') Tuesday,     
       (select a.attendace from  attendance_table a where a.id =e.id and a.week ='Wednesday') Wednesday, 
       (select a.attendace from  attendance_table a where a.id =e.id and a.week ='Thursday') Thursday,  
        .........  
       from employee_table e
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
blademaster717
推荐于2017-07-11 · TA获得超过1456个赞
知道小有建树答主
回答量:882
采纳率:97%
帮助的人:369万
展开全部
--因为姓名可能重复,所以不建议用姓名分组,而用ID分组
SELECT MAX(T1.姓名) AS 姓名,MAX(IIF(T2.日期='周一',t2.出勤,' ')) AS 周一
,MAX(IIF(T2.日期='周二',t2.出勤,' ')) AS 周二
,MAX(IIF(T2.日期='周三',t2.出勤,' ')) AS 周三
,MAX(IIF(T2.日期='周四',t2.出勤,' ')) AS 周四
,MAX(IIF(T2.日期='周五',t2.出勤,' ')) AS 周五 from
员工表 T1 LEFT JOIN 考勤表 T2 ON T1.ID=T2.员工ID
GROUP BY T1.ID
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
su0nils000
2017-06-14 · TA获得超过447个赞
知道小有建树答主
回答量:260
采纳率:100%
帮助的人:93.9万
展开全部
其实你可以考虑用transform语句,简洁多了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式