我正试图从星期六或星期天的表中获取行数。
以下代码无效。
知道怎么做到这一点?
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;
答案 0 :(得分:2)
要仅过滤星期日/星期六,您可能需要TO_CHAR()
select sum(QTY),GROUP
from table
where TO_CHAR(order_date,'DY', 'NLS_DATE_LANGUAGE=AMERICAN') in ('SUN','SAT')
group by GROUP;
答案 1 :(得分:0)
我认为您可以使用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()
方法进行全表扫描,而在这里使用此方法我在日期列上完整扫描了索引。