2011-07-19 32 views
0

是否可以使用oracle pl/sql檢索每行的同一記錄的當前數目?直到此行的同一條記錄的數目

例如, 我有類表,包括ID,姓名,年齡列

我想有學生用相同的名字和年齡進入類的順序,假設ID被打擊了無改變數據結構。

謝謝。

問候,

吉姆

回答

1

不知道我完全明白你問什麼;你有一個奇怪的短語。輸入數據和預期結果的例子總是有用的。

也許是這樣的:

select id, name, age 
from your_table 
where (name, age) in 
    (select name. age 
    from your_table 
    group by name, age 
    having count(id) > 1) 
order by name, age, id 
/

你可以與分析解決這個問題。但是,你仍然需要一個外部查詢濾掉不重複的記錄,所以我不知道你會得到什麼:

select * from (
    select id, name, age 
      , count(id) over (partition by name, age) as dup_count 
    from your_table) 
where dup_count > 1 
order by name, age, id 
/
+0

是的我正在尋找分析的,但我不知道爲什麼我必須過濾dup_count超過1.總之,非常感謝。 – Jim

0

我也不清楚,但它的聲音,我與分析功能有關的東西。以此爲例子,看看srlno列,使用分析功能計算:

SELECT empno, deptno, hiredate, 
ROW_NUMBER() OVER (PARTITION BY 
deptno ORDER BY hiredate 
NULLS LAST) SRLNO 
FROM emp 
WHERE deptno IN (10, 20) 
ORDER BY deptno, SRLNO; 

EMPNO DEPTNO HIREDATE  SRLNO 
------ ------- --------- ---------- 
    7782  10 09-JUN-81   1 
    7839  10 17-NOV-81   2 
    7934  10 23-JAN-82   3 
    7369  20 17-DEC-80   1 
    7566  20 02-APR-81   2 
    7902  20 03-DEC-81   3 
    7788  20 09-DEC-82   4 
    7876  20 12-JAN-83   5 

更多analyltic功能: http://www.orafaq.com/node/55

記住,是一個更好的方法,如果你可以用SQL實現自己的目標,而不是的PL/SQL。

+0

如果您已經將示例代碼定製爲一個實際解決OP需求的示例,那麼這將是更好的答案。 – APC

+0

@Jai:是的,這是我正在尋找的。非常感謝你。 – Jim

+0

@APC,好吧,你很好。下次我會盡量讓我的答案更符合你的要求! :) – Aitor

相關問題