我有一個表中包含類似下面的訂單信息:如何只選擇1行,如果重複行(Oracle)的
我們可以從表中看到,每個order_no有幾個重複。所以我想要每個order_no只保留一行(不管是哪一個)
有誰知道如何做到這一點?所以'明顯'不能在這裏工作)
我有一個表中包含類似下面的訂單信息:如何只選擇1行,如果重複行(Oracle)的
我們可以從表中看到,每個order_no有幾個重複。所以我想要每個order_no只保留一行(不管是哪一個)
有誰知道如何做到這一點?所以'明顯'不能在這裏工作)
這樣的事情,也許?您可以使用PARTITION BY
和ORDER BY
子句來確定返回哪一行。航空代碼:
SELECT t.*
FROM (
SELECT o.*
, ROW_NUMBER() OVER (PARTITION BY o.order_no ORDER BY o.sequence_no) rn
FROM ordertable o
) t
WHERE rn = 1
;
SELECT *
FROM
(
SELECT *
,ROW_NUMBER() OVER (PARTITION BY ORDER_NO ORDER BY ????) as RowNumber
FROM
Orders
) o
WHERE
o.RowNumber = 1
順序只需填寫by子句來選擇你想成爲的第一行哪條記錄。如果你不關心其次序記錄然後換行
,ROW_NUMBER() OVER (PARTITION BY ORDER_NO ORDER BY Null) as RowNumber
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions137.htm
我承擔了下來投票,由於ORDER BY NULL?但Oracle接受它tsql(sql-server)不。看到這個答案:
爲什麼投了票? – Matt
我有同樣的問題,而這個查詢爲我工作。
WITH summary
AS (SELECT g.*,
ROW_NUMBER()
OVER (PARTITION BY g.param_text
ORDER BY g.gnl_param_id DESC)
AS rk
FROM gnl_param g)
SELECT s.gnl_param_id, s.param_text
FROM summary s
WHERE s.rk = 1
在這裏,param_text列應該是唯一的,但不知何故出現重複行。這就是爲什麼我在這一列使用關鍵字分區。
第1步 - 決定你想要哪一行。 –
這裏是關於如何在未來提出問題的一些提示。比如不要發佈你的數據的圖像。我不打算重新輸入它,所以如果你想要的答案已經過測試,而不僅僅是概念化,你應該包含一種方式讓我們有測試數據,如DML語句。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Matt
您在21小時內發佈了三次相同的問題。爲什麼???你第一次發佈時你有兩個答案;如果他們不夠好,你應該在你原來的帖子中這麼說。 – mathguy