皆さん、はじめまして。
表題の件について、お分かりの方教えて下さい。
まず、テーブルですが
テーブル名:table1
得意先CD 得意先名 受注番号 枝番 受注金額
custcd custnm jychuno edano amount
--------------------------------------------
000001 AAAAAAA 0000001 01 111111
000001 AAAAAAA 0000001 02 222222
000001 AAAAAAA 0000002 01 333333
000002 BBBBBBB 0000001 01 444444
のような、取引明細テーブルがあったとします。
ご覧頂いてお分かりの通り、得意先CD毎に受注番号が振られていて
さらに枝番で管理されています。
(枝番が全て01から始まれば、それだけ選べば良いんですが・・・)
この時、同一得意先で受注番号が重複するデータは省きたいのですが
どうDISTINCTを入れれば良いのか分かりません。
上記例では、2行目だけを省きたいのです。
SELECT custcd , custnm , DISTINCT juchuno , edano , amount
FROM table1
ORDERBY custcd , custnm , jychuno , edano;
とするとエラーになります(当然)。
このような時って、どうすれば良いのでしょうか?
最近使い始めた素人ですので、宜しくお願い致します。
No.3ベストアンサー
- 回答日時:
こんにちわ
同一の注文番号は必ず同じ金額である
と言うのが揺ぎ無い条件であるのなら、
2ndさんのSQLをちょっと改造して、
SELECT custcd, suctnum, juchuno, max(amount)
FROM table1
GROUP BY custcd, custnum, juchuno;
で出来ますよ(もちろん、minでもOK)。ただし、お勧めはしません。
その理由は、「他の人がこのSQLを見たときに、何をやりたいのかが分からなくなる」
からです。
又は、「枝番」は必ず01から始まると言うことであれば、
SELECT custcd, custnum, juchuno, amount
FROM table1
WHERE edano = '01'
の方がスマートかと。
しかしこのテーブル、構造的に余り宜しくないですね(笑
受注番号と受注金額で別テーブルを作成すると言うのも一つの案ですよ。
それでは
おぉ~っ、どうせ同一値ならmaxで取れってですか(目から鱗
確かにこれなら、いけるかも!?試してみます。
枝番は、下にも書いた通り01から始まる訳では無いんです。
ったく、うちのテーブル構造に問題があるっちゅーねん、ぶつぶつ・・・(笑
有難う御座いました。
これからもお願いします。
No.2
- 回答日時:
今ひとつ何をなさりたいのか、判りかねるのですが
こんな SQL は的外れでしょうか?
SELECT custcd,custnum,juchuno, sum(amount)
FROM table1
GROUP BY custcd,custnum,juchuno;
2ndさん、回答ありがとうございます。
やりたい事を要約しますと、
「同一受注番号に対して、複数存在する枝番レコードは省きたい。
理由:同一受注番号には、複数の枝番レコードが存在し、各々のレコードに
その受注での合計金額(当然全て同じ金額)が入っている為」
です。
そういう意味では、質問でのテーブル内容は誤りで、2行目には111111が
入っているという訳です。
これは足さずに、1行目・3行目・4行目のamountの合計を取りたい!
というのがやりたい事です。
その時、group by を使ってしまうと、amount が取れなくなってしまいますよね?
それで悩んでいるのです。
何か良い方法がありましたら、教えて下さい。
No.1
- 回答日時:
こんにちは。
そういう場合は、「グルーピングする」と言います。
ですから、この場合、GROUP BYを使うのが正解のはずです。
ただし、edabanとamountはselectできませんよ。
グルーピングと矛盾しますから。
misokaさん、早速の回答有難う御座います。
おっしゃる通り、グループ化すると、edabanとamountがselect出来なくなりますよね。
欲しいデータは、amountなんです。
この合計を取りたいんですよ。
副問い合わせを利用してとか、色々考えたんですが、やっぱりsqlだけでは無理があるんですかねぇ?
やっぱり、取り込んだデータを再加工する方法で考えるしか無いんでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) accessについて 2 2022/05/31 16:58
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
あるフィールドの最大値を条件...
-
Accessフォーム全レコードをPDF...
-
Accessの帳票フォームで重複デ...
-
usingの意味がわからないのですが
-
曜日を表す項目
-
【Accessクエリ】存在しないデ...
-
Access2021 「ISNULL関数には引...
-
MS ACCESS 商品価格変更時の該...
-
「直需」の意味を教えてください
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
Accessでテーブル名やクエリ名...
-
Accessのリンクテーブルのパス...
-
APN設定について教えていただけ...
-
ExcelのデータをコピーでACCESS...
-
異なるサーバのDBデータ同士を...
-
列が存在しないと言われる
-
FROM の中で CASE を使えるでし...
-
Access VBAでクエリーのレコー...
-
作番ってどういう意味でしょうか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access2021 「ISNULL関数には引...
-
accessでの請求管理について
-
accessでのフォームの連携について
-
あるフィールドの最大値を条件...
-
accessについて
-
usingの意味がわからないのですが
-
Accessフォーム全レコードをPDF...
-
アクセスのテーブルを分ける理...
-
Accessの帳票フォームで重複デ...
-
MS ACCESS 商品価格変更時の該...
-
フィールド名が取得したい
-
曜日を表す項目
-
SQL EXISTS演算子について
-
ACCESS VBA クエリを開く
-
SQL Server 2005 Expressで営業...
-
Accessでクエリの作成、多対1対...
-
集計結果を別テーブルに更新ク...
-
受注明細テーブルについて
-
ACCESS データシートビューでの...
-
SQLコマンドのorder by句
おすすめ情報