2016-09-24 7 views
-1

私は2列を持っています。 CUSTNOとCustBalmaxを使用せずに最高値を選択していますか?

最高のバランスでCUSTNOを選択するようにスクリプトを記述しようとしています。私はmaxを使ってみましたが、私はちょうどCustBalカラムを使用していても、この場合は動作しません。私はそれがCUSTBALの後に何かを持つアイテムであると思いますか?

SELECT CUSTNO, CUSTBAL 
FROM CUSTOMER 
WHERE CUSTBAL 
+0

私は近づいています。今、私は最高のバランスを持っていますが、doesntのは、顧客からのCUSTNO SELECT CUSTNO、CUSTBALが含まれます。 SELECT MAX(CustBal)FROM CUSTOMER –

+0

サンプルデータと予想される結果を追加してください。 –

+0

用語:クエリを作成しようとしています。あなたが書いたものはすべて "スクリプト"ではありません。 – mathguy

答えて

1

なぜMAXを使用しないのですか?

MAXを個別に計算する必要があります。これは、クエリの最後で(SELECT句の集計関数MAXを使用して)行うことができるためで、1つのクエリで個々の行と集計を混在させることはできません。したがって、MAXをサブクエリで計算する必要があります。代わり

select custno, custbal 
from customer 
where custbal = (select max(custbal) from customer) 
; 
+0

ありがとう!それはそれをした!私は最初から最大を悪用していた。 –

+0

真実を伝えるには、同じクエリで個々の行とANALYTIC関数を混在させることができますが、この場合でも必要な行だけを選択するには "外側"クエリが必要になります。そして、あなたが勉強している時点では、分析機能はまだ数ヶ月(おそらく)です。あとで参考にしてください。 – mathguy

3

select * from 
(select custno, custbal from customer order by custbal desc) 
where rownum = 1 

あなたは12cを持っている..if:

select custno, custbal from customer 
order by custbal desc 
fetch next 1 rows only 

しかし、これらは、同じ最高のバランスを持つ複数の顧客が存在する場合でも、単一の行を返しますが。あなたは最高のcustbal、持つすべてのレコードたい場合: - あなたのCUSTBALの最大とを提供

select custno, custbal from 
(select *, dense_rank() over (order by custbal desc) as rank from customer) 
where rank = 1 
0


こんにちはニッキー、
をまた

SELECT CUSTNO, MAX(CUSTBAL) 
    FROM CUSTOMER 
     GROUP BY CUSTNO 
     ORDER BY CUSTNO 

GROUP BYは、機能によって、簡単なグループを使用することができますCUSTNOに関して
ORDER BY - CUSTNO列の昇順で結果を表示します。

関連する問題