我的查詢看起來是這樣的:ROW_NUMBER()OVER(由....分區)返回特定行
with T1 as (
Select
Dept_No,
Product_No,
Order_No,
Order_Type
Row_number() over (partition by Product_ID order by Order_No desc) as "COUNT"
From Orders_Table)
Select * from T1
where ("COUNT" = '1' and "Order_Type" <> 'Cancel')
or ("COUNT" = '2' AND "Order_Type" <> 'Cancel'
所以我想拉,這不是取消了最近的訂單。本質上,我的ROW_number()over(partition by ...)函數按順序標記訂單,其中1是最近的訂單,2是最近的第二個訂單。問題在於,通過此查詢,它會同時提取最近的和最近的第二個訂單。我正試圖把它寫到哪裏,如果它只給出一個或另一個。所以如果COUNT = 1並且order_type不是取消,那麼只顯示那條記錄。如果沒有,然後告訴我第二。
非常感謝您的幫助。這是使用SQL選項卡在Toad for Oracle 9.5中完成的。
輸入/輸出,請。 – zaratustra 2014-09-29 14:22:20
將「Order_Type」<>'Cancel'添加到cte,然後僅在第二個查詢中查找「Count」='1'。試試看。 – websch01ar 2014-09-29 14:25:33
Websch01ar。在閱讀你的評論之前,我只是在想。好想法!讓我檢查一下,然後標記爲答案 – user3486773 2014-09-29 14:46:53