以下のSQLでこのような期待値を取りたいのですが、うまく取れません。
解決方法を教えていただけると嬉しいです。
【結果】
"TESTGY01";2;"業務宛名担当者(管理者)_old";"ギョウムタントウシャ(カンリシャ)オールド"
"TESTGY01";2;"業務宛名担当者(管理者)";"ギョウムタントウシャ(カンリシャ)"
【期待値】
"TESTGY01";2;"業務宛名担当者(管理者)";"ギョウムタントウシャ(カンリシャ)"
【データ】
〇USER_AUTH
"TESTGY01";2;
"TESTGY02";1;
〇USER_NAME
"TESTGY01";1;"業務宛名担当者(管理者)_old";"ギョウムタントウシャ(カンリシャ)オールド";
"TESTGY01";2;"業務宛名担当者(管理者)";"ギョウムタントウシャ(カンリシャ)";
SELECT UA.USER_ID AS "USER_ID" , UA.RIREKI_NUMBER AS "RIREKI_NUMBER" , UN.USER_NAME_KANJI AS "USER_NAME_KANJI" , UN.USER_NAME_KANA AS "USER_NAME_KANA" FROM USER_AUTH UA LEFT JOIN USER_NAME UN ON UA.USER_ID = UN.USER_ID WHERE NOT EXISTS ( SELECT * FROM USER_AUTH B WHERE UA.USER_ID = B.USER_ID AND UA.RIREKI_NUMBER < B.RIREKI_NUMBER ) AND UA.USER_ID = 'TESTGY01'
【補足】
試してみたSQLは以下です。
SELECT UA.USER_ID AS "USER_ID" , UA.RIREKI_NUMBER AS "RIREKI_NUMBER" , UN.USER_NAME_KANJI AS "USER_NAME_KANJI" , UN.USER_NAME_KANA AS "USER_NAME_KANA" FROM USER_AUTH UA LEFT JOIN ( SELECT UN.USER_ID AS "USER_ID" , UN.RIREKI_NUMBER AS "RIREKI_NUMBER" , UN.USER_NAME_KANJI AS "USER_NAME_KANJI" , UN.USER_NAME_KANA AS "USER_NAME_KANA" FROM USER_NAME B WHERE UN.USER_ID = B.USER_ID AND UN.RIREKI_NUMBER < B.RIREKI_NUMBER ) USER_NAME UN ON UA.USER_ID = UN.USER_ID WHERE NOT EXISTS ( SELECT * FROM USER_AUTH B WHERE UA.USER_ID = B.USER_ID AND UA.RIREKI_NUMBER < B.RIREKI_NUMBER ) AND UA.USER_ID = 'TESTGY01'
追加
CREATE TABLE user_auth
(
user_id character varying(30) NOT NULL,
rireki_number integer NOT NULL DEFAULT 1,
CONSTRAINT pk_user_auth PRIMARY KEY (user_id, rireki_number)
)
CREATE TABLE user_name
(
user_id character varying(30) NOT NULL,
rireki_number integer NOT NULL DEFAULT 1,
user_name_kanji character varying(205),
user_name_kana character varying(205),
CONSTRAINT pk_user_name PRIMARY KEY (user_id, rireki_number)
)
〇USER_AUTH
INSERT INTO user_auth (user_id, rireki_number) VALUES ('TESTGY01', 1);
INSERT INTO user_auth (user_id, rireki_number) VALUES ('TESTGY02', 2);
〇USER_NAME
INSERT INTO user_name (user_id, rireki_number,user_name_kanji,user_name_kana) VALUES ('TESTGY01', 1,"業務宛名担当者(管理者)_old",ギョウムタントウシャ(カンリシャ)オールド);
INSERT INTO user_name (user_id, rireki_number,user_name_kanji,user_name_kana) VALUES ('TESTGY01', 2,"業務宛名担当者(管理者)",ギョウムタントウシャ(カンリシャ));
回答4件
あなたの回答
tips
プレビュー