原始表:
name date ZT
張三 星期一 缺勤
張三 星期四 遲到
小明 星期一 遲到
小明 星期三 遲到
查詢表:
name 星期一 星期二 星期三 星期四
張三 缺勤 遲到
小明 遲到 遲到
這個sql陳述句應該怎么寫啊?
uj5u.com熱心網友回復:
select name ,
max(decode(date,'星期一',ZT)) as W1 ,
max(decode(date,'星期二',ZT)) as W1 ,
.... 剩下的自己加
from mytable
group by name
uj5u.com熱心網友回復:
with t as(
select '張三' as name,'星期一' as date1,'缺勤' as zt from dual
union all select '張三' as name,'星期四' as date1,'遲到' as zt from dual
union all select '小明' as name,'星期一' as date1,'遲到' as zt from dual
union all select '小明' as name,'星期三' as date1,'遲到' as zt from dual
)
--第一種:
select name,
max(case when date1='星期一' then zt else '' end) 星期一,
max(case when date1='星期二' then zt else '' end) 星期二,
max(case when date1='星期三' then zt else '' end) 星期三,
max(case when date1='星期四' then zt else '' end) 星期四,
max(case when date1='星期五' then zt else '' end) 星期五,
max(case when date1='星期六' then zt else '' end) 星期六,
max(case when date1='星期日' then zt else '' end) 星期日
from t
group by name
--第二種:
select * from t
pivot(max(zt) for date1 in('星期一','星期二','星期三','星期四','星期五','星期六','星期日'))
--group by name
以及 1# 的哪一種,這三種都可以
uj5u.com熱心網友回復:
行轉列的需求select * from t
pivot(max(zt) for date1 in('星期一','星期二','星期三','星期四','星期五','星期六','星期日'))
--group by name
這語法到11.2以后才能用
uj5u.com熱心網友回復:
建議用pivot函式
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/107685.html
標籤:開發
上一篇:安裝oracle12c的時候彈出亂碼提示框,點擊之后退出安裝程式
下一篇:求高手指教
