我不知道你的桌子的結構,所以我會告訴你一個例子,我將如何做到這一點。
說有一個表orders
:
CREATE TABLE orders(
vendor varchar2(100), order_date date
);
那麼該表的查詢可以是:
SELECT to_char(order_date, 'IW') as Week_nbr,
vendor,
count(*) As number_of_orders
FROM (
SELECT t.*,
max(order_date) OVER (Partition by vendor, to_char(order_date, 'IW'))
As lastest_date_within_a_week
FROM orders t
) xx
WHERE order_date = lastest_date_within_a_week
GROUP BY to_char(order_date, 'IW'),
vendor
ORDER BY 1,2
這條線:
max(order_date) OVER (Partition by vendor, to_char(order_date, 'IW'))
As lastest_date_within_a_week
正在尋找最新的(最老)爲每個供應商在每週內訂購日期。如果一個供應商在給定的周內只有2個訂單,一個在星期一,另一個在星期四,那麼這個函數返回一個Thurdsay的日期。
這裏:
WHERE order_date = lastest_date_within_a_week
我們正在供應商的訂單隻能從最後一天在一個星期。
然後將查詢做一個簡單的GROUP BY week_nr, vendor
和COUNT(*)
的工作演示:http://sqlfiddle.com/#!4/96df3/1
可以告訴你,你想通了(訂單數量從供應商長期與其他信息逢星期五) – Hawk
查詢@Hawk '與DT爲 ( 選擇 NEXT_DAY(TRUNC(ADD_MONTHS(SYSDATE,-12))+ 7 *(1級), 'FRI')從 雙 d 通過水平<連接= 53 ) 選擇* from dt,供應商 其中vendor.dt = dt.d ' – user2247364
這是過於不確定的條款。你想獲得一週或一週中每天的訂單數據嗎? – ksa