お世話になります。

SQL文で、下記内容のデータを取得する方法がわかりません。

・TESTテーブルからA、B、Cの3項目のデータを取得する。
・但し、この中のC項目については、WHERE句の条件を満たす
データの最大値を取得する。
・項目AおよびBの取得条件は、項目Cと同一条件とする。
・目的は、項目AおよびBに関しては、WHERE句の条件を満たす
 全てのレコードを取得し、項目Cにおいては最大値のみ取得したい。

上記内容を取得しようと考えた場合、
現時点で下記のSQL文を作成して実行しましたが、
うまくデータが取得できません。

SELECT
A, B, C
FROM
TEST
WHERE
C = (SELECT MAX(C) FROM TEST)
AND Z = 'xxxxx'
AND Y = 'x'
AND X = 'Y'

※項目X, Y, ZはTESTテーブルのカラムです
※上記SQLを、A、Bのみ取得用とCのみ取得用に
  それぞれ分解して実行すると、それぞれの結果は
  正常に取得できます。

2つの結果を1つのSQLで取得することは可能でしょうか?

どなたかご教授願えますか?よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

ソート C++」に関するQ&A: C++ ソートのやり方

A 回答 (2件)

いまいち条件がきちんと理解できていないのですが。


A・Bは全レコード、Cは最大値ということは、取得した全レコードはCの値は同一になるということでいいですか?
それなら、
SELECT
A, B, MAX(C) OVER() C
FROM
TEST
WHERE
Z = 'xxxxx'
AND Y = 'x'
AND X = 'Y';
でいいと思います。
    • good
    • 0

SELECT


 *
FROM
( SELECT
  A,B,C
 FROM
  TEST
 WHERE
  Z = 'xxxxx'
  AND Y = 'x'
  AND X = 'Y'
 ORDER BY
  C DESC
)
WHERE
 ROWNUM = 1

Oracleは使ったことがないのですが、
Cでソートをした物のなかからROWNUMが1の物を取得すれば良いかと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング