sql查询,列转行

baidu_18698117 2017-01-06 02:49:40
已知表: assess
员工号(no) 星期号(week) 是否培训(whether)
1 2 有
1 3 有
1 2 有
2 1 有
3 2 有
写一条SQL语句让值变成这样
员工号 星期一 星期二 星期三
  1       2   1 
 2   1   
3       1

...全文
355 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sych888 2017-01-06
  • 打赏
  • 举报
回复
SQL> with tt as( 2 select 1 sno,'2' week from dual union all 3 select 1 ,'3' from dual union all 4 select 1 ,'2' from dual union all 5 select 2 ,'1' from dual union all 6 select 3 ,'2' from dual) 7 select sno,sum(case week when '1' then 1 else null end) "星期一" 8 ,sum(case week when '2' then 1 else null end) "星期二" 9 ,sum(case week when '3' then 1 else null end) "星期三" from tt group by sno; SNO 星期一 星期二 星期三 ---------- ---------- ---------- ---------- 1 2 1 2 1 3 1
sych888 2017-01-06
  • 打赏
  • 举报
回复
SQL> with tt as( 2 select 1 sno,'2' week from dual union all 3 select 1 ,'3' from dual union all 4 select 1 ,'2' from dual union all 5 select 2 ,'1' from dual union all 6 select 3 ,'2' from dual) 7 select sno,sum(case week when '1' then 1 else 0 end) "星期一" 8 ,sum(case week when '2' then 1 else 0 end) "星期二" 9 ,sum(case week when '3' then 1 else 0 end) "星期三" from tt group by sno; SNO 星期一 星期二 星期三 ---------- ---------- ---------- ---------- 1 0 2 1 2 1 0 0 3 0 1 0
sych888 2017-01-06
  • 打赏
  • 举报
回复
case ... when ...
落落叶叶无声 2017-01-06
  • 打赏
  • 举报
回复

WITH assess AS (
SELECT 1 AS NO_, 2 AS WEEK, '有' AS WHETHER FROM DUAL
UNION ALL
SELECT 1 AS NO_, 3 AS WEEK, '有' AS WHETHER FROM DUAL
UNION ALL
SELECT 1 AS NO_, 2 AS WEEK, '有' AS WHETHER FROM DUAL
UNION ALL
SELECT 2 AS NO_, 1 AS WEEK, '有' AS WHETHER FROM DUAL
UNION ALL
SELECT 3 AS NO_, 2 AS WEEK, '有' AS WHETHER FROM DUAL
)
SELECT NO_, 
SUM(DECODE(WEEK, 1, 1, NULL)) 星期一,
SUM(DECODE(WEEK, 2, 1, NULL)) 星期二,
SUM(DECODE(WEEK, 3, 1, NULL)) 星期三 FROM assess
GROUP BY NO_;

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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