2011-07-27 8 views
1

SQL文を作成して、必要な値を返すのに問題があります。ユーザーID、第2列の値、およびその列の値が複数回表示される第3列の値に基づいてデータを選択する必要があります。すべての列が同じテーブル内にあります。Oracle SQLの列の値が基準として明確でない

ここでは、私のクエリの外観を概説しますが、最後のANDステートメントは明らかに私が望むもののアイデアを与えるだけです。結果を絞り込む可能性のあるCOUNT文は、私にとってはうまくいかないでしょう。

SELECT * 
FROM table 
WHERE user_id = 123 
AND second_id = 1 
AND third_id having COUNT(1) > 1; 

答えて

4

あなたが必要なのは、列がUSER_ID second_idある場合は、この試行しthird_id:あなたは追加の列を持っており、それらのフィールドを取得するだけでなく上記&オラクル9.2(これを試してみたい場合は

SELECT user_id, second_id, third_id, COUNT(1) 
FROM table 
WHERE user_id = 123 
AND second_id = 1 
GROUP BY user_id, second_id, third_id 
HAVING COUNT(1) > 1; 

を):

WITH qry AS 
(
    SELECT a.*, 
      COUNT(1) OVER(PARTITION BY user_id, second_id, third_id) rpt_count 
FROM table a 
WHERE user_id = 123 
AND second_id = 1 
) 
SELECT * 
    FROM qry 
    WHERE rpt_count > 1 
+0

2番目のオプションは、私が必要としたように見える、ありがとう。しかし、私はあなたが助けることができるなら、もう一つのステップがあると思います。これらの結果をサブクエリの一部として使用する必要があるので、完全なクエリはそれらの結果を見てMIN(fourth_id)を結果。 – Major

関連する問題