我正试着在星期六或星期天这样的一天里从我的桌子上得到行数。
下面的代码不工作。
知道如何做到这一点吗?
SELECT next_day(sysdate-8, 'SUN') from dual;
NEXT_DAY(SYSDATE-8,)
-------------------
2014/11/02 21:22:30我的尝试:
select sum(QTY),GROUP from table where next_day(order_date-8, 'SUN') group by GROUP;发布于 2014-11-05 21:33:20
要只过滤星期日/星期六,您可能需要TO_CHAR()
select sum(QTY),GROUP
from table
where TO_CHAR(order_date,'DY', 'NLS_DATE_LANGUAGE=AMERICAN') in ('SUN','SAT')
group by GROUP;发布于 2014-11-06 04:22:19
我认为您可以使用NEXT_DAY()函数如下:
SELECT SUM(qty), group
FROM table
WHERE order_date = NEXT_DAY(order_date - 1, 'SAT')
OR order_date = NEXT_DAY(order_date - 1, 'SUN')
GROUP BY group如果order_date列上有索引,甚至可以避免全表扫描。我只是在一个类似的表上试了一下,使用上面的TO_CHAR()方法我得到了一个完整的表扫描,而在这里使用这个方法,我得到了日期列上的索引的完整扫描。
https://stackoverflow.com/questions/26767433
复制相似问题