在在Oracle和和MySQL中利用中利用SQL查询出今年日历查询出今年日历
Oracle写法:
select case
when rank() over(partition by month order by week) = 1 then
month
else
' '
end month,
max(一) 一,
max(二) 二,
max(三) 三,
max(四) 四,
max(五) 五,
max(六) 六,
max(日) 日
from (select to_char(start_day + i, 'iw') week,
to_number(to_char(start_day + i, 'mm')) || '月' month,
case
when to_char(start_day + i, 'd') = c.一 then
to_char(start_day + i, 'dd')
end 一,
case
when to_char(start_day + i, 'd') = c.二 then
to_char(start_day + i, 'dd')
end 二,
case
when to_char(start_day + i, 'd') = c.三 then
to_char(start_day + i, 'dd')
end 三,
case
when to_char(start_day + i, 'd') = c.四 then
to_char(start_day + i, 'dd')
end 四,
case
when to_char(start_day + i, 'd') = c.五 then
to_char(start_day + i, 'dd')
end 五,
case
when to_char(start_day + i, 'd') = c.六 then
to_char(start_day + i, 'dd')
end 六,
case
when to_char(start_day + i, 'd') = c.日 then
to_char(start_day + i, 'dd')
end 日
from (select last_day(add_months(trunc(sysdate),-to_number(to_char(sysdate,'mm')))) start_day
from dual) a,
(select rownum i from xmltable('1 to 1000')) b,
(select '2' 一, '3' 二, '4' 三, '5' 四, '6' 五, '7' 六, '1' 日
from dual) c
where start_day + i < add_months(last_day(add_months(trunc(sysdate),-to_number(to_char(sysdate,'mm')))),12))
group by week, month
order by week;
想不想成为SQL大神?想不想精通SQL优化,精通所有关系型数据库优化?
加我微信692162374 报名单独辅导 , 顺带我还可以教你Python,Oracle,MySQL,以及大数据
MySQL写法:
select case
评论0
最新资源