2011-07-19 4 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

はい、私は分析1を探していますが、私はとにかく以上の1であることをdup_countをフィルタリングする必要があり、なぜ私はわからない、どうもありがとうございました。 – Jim

0

私はどちらかわからないんだけど、それは私に聞こえます分析機能に関連するもの。 analyltic機能上の

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 

詳細:分析関数を使用して計算srlno欄、見て、一例として、これを取る http://www.orafaq.com/node/55

は、あなたの代わりにSQLを使用して目標を達成することができればよりよい方法であることを覚えておいてくださいのPL/SQLの。

+0

これは、あなたが実際にOPの要件に対処例にサンプルコードを仕立てていた場合は、より良い答えただろう。 – APC

+0

@Jai:はい、これは私が探しているものです。どうもありがとうございました。 – Jim

+0

@APC、大丈夫です。次回は、私の答えにもっと合うようにしよう! :) – Aitor

関連する問題