我被困在一个查询上,

其中我有 52 周数据,我可以通过获取周数并与数据周数进行比较来根据 sysdate 进行安排。
现在我想要做的是,如果当前周数是 10,我想按降序排列所有周,例如取决于 sysdate 周数 week10,week9,week8.........week11,

有了这个查询

select "Weekly","Quarter","SALES","Monthly",week_number from fiscal_calendar 
where week_number <= TO_CHAR(TO_DATE(sysdate,'DD-mon-YYYY'),'iw')  
order by  week_number desc; 

我可以将数据排序到第 1 周,但我想继续这个序列,就像在第 11 周结束一样
那么是不是我做错了什么
请指教

请您参考如下方法:

如果我理解正确,您可以尝试

SELECT * FROM 
(SELECT "Weekly","Quarter","SALES","Monthly",week_number FROM fiscal_calendar 
  WHERE week_number <= TO_NUMBER(TO_CHAR(SYSDATE,'IW'))  
  ORDER BY  week_number desc) t1 
UNION ALL 
SELECT * FROM  
(SELECT "Weekly","Quarter","SALES","Monthly",week_number FROM fiscal_calendar 
  WHERE week_number > TO_NUMBER(TO_CHAR(SYSDATE,'IW')) 
  ORDER BY  week_number) t2 

这里是简化版 SQLFiddle example


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!