sql如何将结果行转换为列

rp1qfd 2014-12-29 02:46:51
有个作息表,字段XQ从1到7 对应的SFXX,0是休息 1是上班, 有个员工BH

另个表就是员工BH对应XM
现在想的是假如我输入12月1日至3日,
我要显示每天上班的人,结果是
20141201 20141202 20141203
张三 张三
李四
王五 王五
日期对应星期我是用的C#的DayOfWeek自己写switch对应的,如果能直接用我给的两个日期来做以上效果最好604790441
表1
bh xq sfxx
1 1 1
1 2 0
1 3 1
1 4 0
1 5 0
1 6 1
1 7 0
2 1 1
。。。
表2
bh xm
1 张三
2 李四
3 王五
大概就是这个结构
...全文
406 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灰狼W 2014-12-29
  • 打赏
  • 举报
回复
这个结果。。。会被玩坏的。。。 作息表很奇怪,只存一个星期的数据?那么选择日期还有什么意义呢,直接固定显示7天也没什么差别了
rp1qfd 2014-12-29
  • 打赏
  • 举报
回复
bw555 超级感谢,CSDN果然是大神多啊,我想了好久都没想出来该咋弄,谢谢了!
bw555 2014-12-29
  • 打赏
  • 举报
回复
select 
max(decode(表1.xq,to_char(to_date('20141201','yyyymmdd'),'d'),decode(表1.sfxx,1,表2.姓名))) as "20141201",
max(decode(表1.xq,to_char(to_date('20141202','yyyymmdd'),'d'),decode(表1.sfxx,1,表2.姓名))) as "20141202",
max(decode(表1.xq,to_char(to_date('20141203','yyyymmdd'),'d'),decode(表1.sfxx,1,表2.姓名))) as "20141203"
from 表1,表2
where 表1.bh=表2.bh
group by 表1.bh
列不固定的话,需要在应用程序中动态拼接,或是在数据库中动态创建视图实现
rp1qfd 2014-12-29
  • 打赏
  • 举报
回复
可是客户就是想看到这种EXCEL,就是列头都是日期,行都是对应的人,如果有就显示,没有就不显
bw555 2014-12-29
  • 打赏
  • 举报
回复
行转列百度下,实例一大堆的啊
Tiger_Zhao 2014-12-29
  • 打赏
  • 举报
回复
用 TO_CHAR(日期 - 1,'d') 获得星期几。
建议先建个日历表,把星期预先算好。
可以根据日期范围多表关联生成单元明细。
不定长的行列转换还是用程序处理比较方便,否则列多了SQL可能超长。

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧