フォーラムを検索する前にフォーラムを検索しましたが、同じ問題に近いトピックがいくつか見つかりましたが、まだ質問が残っていますので、ここに投稿しています。異なる列の異なる値に対して同じ列を選択してください
EMP_ID SEQ_NR NAME
874830 3 JOHN
874830 4 JOE
874830 21 MIKE
874830 22 BILL
874830 23 ROBERT
874830 24 STEVE
874830 25 JERRY
出力は次のようになります。
EMP ID SEQ3NAME SEQ4NAME SEQ21NAME SEQ22NAME SEQ23NAME SEQ24NAME SEQ25NAME
874830 JOHN JOE MIKE BILL ROBERT STEVE JERRY
SELECT A.EMP_ID
,A.NAME SEQ3NAME
,B.NAME SEQ4NAME
FROM AC_XXXX_CONTACT A
INNER JOIN AC_XXXX_CONTACT B ON A.EMP_ID = B.EMP_ID
WHERE A.SEQ_NR = '03' AND B.SEQ_NR = '04'
AND B.EMP_ID = '874830';
上記のクエリは、以下の結果を得るのに役立ちました。
EMP_ID SEQ3NAME SEQ4NAME
874830 JOHN JOE
私はテーブルに5回以上参加しなければならない私の質問には、すべてのフィールド(すなわちSEQ NR = 25まで)を取得することです。
結果を得るためのより良い方法はありますか?
私は、Oracle DBに対するあなたの助けを
感謝を照会メートル。
新しい要件
New Input
STU-ID SEM CRS-NBR
12345 1 100
12345 1 110
12345 2 200
New Output
stu-id crs1 crs2
12345 100 200
12345 110
可能なSEQ_NR値の固定リストがありますか?あらかじめわかっていますか?そうでなければ、単純なSQLでは望みのことはできません。 「ダイナミックSQL」が必要です。これは基本的に、1つのクエリでテーブルを読み取る必要があります。その出力は、目的の出力を生成する新しいクエリのテキストです。問題は、SQLクエリが、出力に含まれるすべての列の数と名前(およびデータ型)を事前に知っていなければならないことです。 – mathguy
はい、SEQ_NRには上記の値しかありません。 –
Oracleのバージョンは?ピボットをする必要があり、最も単純なソリューションはOracleのバージョンによって異なります。どのバージョンでも結合は必要ありません。 – mathguy