2017-10-24 10 views
1

これは私が試したクエリです:もし1、2、3、4、5の項目があれば、それは4 & 5を返すでしょうが、2,3,4 5.どのように私は組み込み関数テーブルから上位2つの値を見つけよう

SELECT S.item, max(B.QUANTITY) 
FROM Bucket B, Store S 
WHERE S.Store_ID = B.Store_ID 
AND QUANTITY > (SELECT min(QUANTITY) 
       FROM Store S, Bucket B 
       WHERE S.Store_ID = B.Store_ID) 
       GROUP BY S.item 
+2

使用しているデータベースで質問にタグを付けます。 –

+2

明示的な「JOIN」文章の使用を促進して、Aaron Bertrandは素敵な記事を書いています(古いスタイルのJOINを使って蹴る悪い習慣)(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/それについての悪い習慣から蹴りを使う古いスタイルの結合.aspx)。 –

+0

あなたがしている可能性があります: 'QUANTITY> (SELECT min(QUANTITY)...'これは間違いなく*トップ値...;) – alfasin

答えて

0

せずにそれを行うのですが、このお試しください:あなたはどんな列で[アイテム]を交換する必要があるかもしれ

select top (2) * from (

SELECT S.item, max(B.QUANTITY) 
FROM Bucket B, Store S 
WHERE S.Store_ID = B.Store_ID 
AND QUANTITY > (SELECT min(QUANTITY) 
       FROM Store S, Bucket B 
       WHERE S.Store_ID = B.Store_ID) 
       GROUP BY S.item 

) order by [Item] desc 

は「4」と「5」が含まれていますあなたが探している価値

SELECT * 
    FROM (SELECT S.item, MAX(B.QUANTITY) 
      FROM Bucket B, Store S 
     WHERE S.Store_ID = B.Store_ID 
     GROUP BY S.item 
     ORDER BY MAX(B.QUANTITY) DESC) 
WHERE ROWNUM <= 2; 

編集:あなたがこれを行うことができ、OracleがSQLを想定し

+0

組み込み関数を使用することで、私はそれを行うことができます。しかし、私はそれらなしでそれをやろうとしていました – negan

0

はそれなしで働かないかなり確信して、GROUPBYを追加しました!

関連する問題