我需要在多列中按日期范围加总值。每个日期范围是一个月的一周。如果是月初或月末,则可以短于7天。例如,我……
你可以这样做:
select * from ( select to_char(dt, 'iw') - to_char(trunc(dt, 'month'), 'iw') + 1 wk, usr, val from t) pivot (sum(val) for wk in (1, 2, 3, 4, 5, 6))
的 演示 强>
USR 1 2 3 4 5 6 --- ---------- ---------- ---------- ---------- ---------- ---------- A 250 B 90 Z 120
标题数字是一个月的几周。如果月份从周末开始并且超过28天,则最大值可以是6。
如果需要,您可以通过类似的方式找到每周的第一天和最后一天,但不能将它们作为标题,或者至少不容易。