電子書籍の厳選無料作品が豊富!

お世話になります。
下記の件、ご教授願えるでしょうか。

開発環境:Windows7
使用DB :Oracle11g 11.2.0.1.0

下記のようなテーブルAがあるとします。(REGNOはユニーク)

 REGNO | INFO1 | INFO2 |
―――――+―――――+――――|
  1   |  abc   |  xyz  |
  2   |  def   |  abc   |
  3   |  ghi   | (NULL) |
  4   |  jkl   |   mno   |
  5   |  def   |  pqr   |

INFO1,2に着目し、重複データがあれば、大きい方のREGNOを取得したい。
例:
INFO REGNO
abc 2
xyz 1
def 5
ghi 3
jkl 4
mno 4
pqr 5

と言うような結果を得たいのですが、ご教授願えるでしょうか。

何卒宜しくお願い致します。

質問者からの補足コメント

  • うーん・・・

    頂いた回答でoracleのSQLとしてほぼ使用できましたが。。
    bonaronさん、質問追加補足させて下さい。
     REGNO | INFO1 | INFO2 | DATE | TIME |
    ―――――+―――――+――――+―――+――――|
      1   |  abc   |  xyz  | 1/1 | 01:01 |
      2   |  def   |  abc   | 2/2 | 02:02 |
      3   |  ghi   | (NULL) | 3/3 | 03:03 |
    の場合、大きい方のREGNOと設定日時を取得したい。
    INFO REGNO DATE TIME
    abc  2 2/2 02:02
    xyz  1 1/1 01:01
    DATEとTIMEにGroup BYを使用できない。。。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/02/14 14:57

A 回答 (2件)

横からですが、もしかしたら動かないかも


SELECT MAIN.REGNO
, CASE WHEN Q.INFO = MAIN.INFO1 THEN MAIN.INFO1 ELSE MAIN.INFO2 END AS INFO
, MAIN.DATE
, MAIN.TIME
FROM [テーブル] AS MAIN
JOIN (
SELECT INFO,MAX(REGNO) AS REGNO
FROM (
SELECT INFO1 AS INFO, REGNO
FROM [テーブル]
UNION ALL
SELECT INFO2, REGNO
FROM [テーブル]
) Q
GROUP BY INFO
) Q
ON MAIN.REGNO = Q.REGNO
;
    • good
    • 0
この回答へのお礼

ご回答の程、ありがとうございました。

回答内容を参考にして、希望通りのデータが取得できました!

ありがとうございました。

お礼日時:2017/02/16 11:57

Oracle の SQL は知らないので Access の場合ですが、参考になれば。



SELECT Q.INFO, Max(Q.REGNO) AS REGNO
FROM (
SELECT [テーブル].REGNO, [テーブル].INFO1 AS INFO
FROM テーブル
UNION ALL
SELECT [テーブル].REGNO, [テーブル].INFO2
FROM テーブル
) AS Q
WHERE Q.INFO Is Not Null
GROUP BY Q.INFO
この回答への補足あり
    • good
    • 0
この回答へのお礼

ご回答の程、ありがとうございました。

早速、確認させて頂きたいと思います。
確認結果は、お知らせ致します。

お礼日時:2017/02/13 15:48

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