SQL select結果で値が重複する場合は最初の1行だけ表示したい ROW_NUMBER
2025-06-16 14:09
テーブルイメージ)
得意先名,納品先名
得意先A,納品先A
得意先A,納品先B
得意先A,納品先C
得意先B,納品先A
SELECT結果イメージ)
得意先名,納品先名
得意先A,納品先A
"",納品先B
"",納品先C
得意先B,納品先A
上記は例題ですが、例えば得意先名が重複する場合は最初の1行だけ得意先名を表示するSQLを作成したいです。
ROW_NUMBER()とCACE文を使って取ろうと思ったんですが、恐らくROW_NUMBER()が使えない?のか「SQLが正しくありません」とメッセージが出ます。
何か良い方法はないでしょうか?
お手数おかけしますが、知恵をお借りしたいです。
回答を投稿するにはログインが必要です。
かわせみ様
ご連絡が遅くなりまして大変申し訳ございません。
回答ありがとうございました。
他の方も同様に「SQLが正しくありません」とエラーになってしまうという事が知れて良かったです。
また、私も最終的にはかわせみ様と同じく、SQLで空白にする事は諦めてSELECTした後にループを行って空白処理を実行しました。
この度は親身になって頂き、ありがとうございました。
ご連絡が遅くなりまして大変申し訳ございません。
回答ありがとうございました。
他の方も同様に「SQLが正しくありません」とエラーになってしまうという事が知れて良かったです。
また、私も最終的にはかわせみ様と同じく、SQLで空白にする事は諦めてSELECTした後にループを行って空白処理を実行しました。
この度は親身になって頂き、ありがとうございました。

こんにちは。
試してみましたが動かないですね。「SQLが正しくありません」
MySQLがベースですが、動くDB関数と動かないDB関数があるようです。
SELECT
ROW_NUMBER() OVER (ORDER BY id) AS mynum
, id
, code
, name
FROM
test
得意先名,納品先名
得意先A,納品先A
得意先A,納品先B
得意先A,納品先C
得意先B,納品先A
一旦、全部出した後、表をループ処理するのはどうでしょうか。
変数=調査用得意先名
「1行目を調査・・得意先A・・調査用得意先名=得意先A」
「2行目を調査・・得意先A・・調査用得意先名と同じなので空欄にする~」
「3行目を調査・・得意先A・・調査用得意先名と同じなので空欄にする~」
「4行目を調査・・得意先B・・調査用得意先名と違うので、調査用得意先名=得意先B」
つたない文章ですが伝わりましたら幸甚です。
試してみましたが動かないですね。「SQLが正しくありません」
MySQLがベースですが、動くDB関数と動かないDB関数があるようです。
SELECT
ROW_NUMBER() OVER (ORDER BY id) AS mynum
, id
, code
, name
FROM
test
得意先名,納品先名
得意先A,納品先A
得意先A,納品先B
得意先A,納品先C
得意先B,納品先A
一旦、全部出した後、表をループ処理するのはどうでしょうか。
変数=調査用得意先名
「1行目を調査・・得意先A・・調査用得意先名=得意先A」
「2行目を調査・・得意先A・・調査用得意先名と同じなので空欄にする~」
「3行目を調査・・得意先A・・調査用得意先名と同じなので空欄にする~」
「4行目を調査・・得意先B・・調査用得意先名と違うので、調査用得意先名=得意先B」
つたない文章ですが伝わりましたら幸甚です。