• ベストアンサー

SQL文の書き方を教えてください。

例 tableAの項目:IDとID名。IDは、8桁の数字。 要は、8桁IDを元に、グループ化したい。 質問一:頭3桁でグループ化したい。 10110010 10111010 ここでひとつグループ --------------- 10300001 質問二:4桁目から2桁(4、5桁の二桁)でグループ化。 10210010 10210020 (10)でグループ化 --------------- 以上のようなSQL文書き方を教えていただけませんか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

IDが数値型で常に10000000以上の数値だと仮定します。 SELECT Mid(tableA.ID,1,3), Min(tableA.ID名) FROM tableA GROUP BY Mid(tableA.ID,1,3); SELECT Mid(tableA.ID,4,2), Min(tableA.ID名) FROM tableA GROUP BY Mid(tableA.ID,4,2); IDが数値型の場合「00110001」や「00000010」では動きません。それぞれが「110001」や「10」と評価されてしまいエラーになりますので。 なお、IDが文字型であれば、IDに「00110001」や「00000010」が含まれていても動きます。 また、上記の例では、適当に「ID名の最も小さい値」もクエリ出力させてます。

Sikabu
質問者

お礼

うまくいきました。どうもありがどうございました、大変助かりました。またよろしくお願いいたします。

その他の回答 (2)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

#2への補足です。 数量の合計を出したいとの事なので。 SELECT Mid(tableA.ID,1,3) AS IDの大分類, Sum(tableA.数量) AS 数量の合計 FROM tableA GROUP BY Mid(tableA.ID,1,3); SELECT Mid(tableA.ID,4,2) AS IDの中分類, Sum(tableA.数量) AS 数量の合計 FROM tableA GROUP BY Mid(tableA.ID,4,2);

Sikabu
質問者

お礼

どうもありがとうございました。またよろしくお願いいたします。

  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.1

>要は、8桁IDを元に、グループ化したい。 「グループ化」とは、具体的にどうしたいということでしょうか?

Sikabu
質問者

補足

ほかの項目もあるですが、グループ化して、数量の合計を計算したいです。質問が不充分ですみませんでした。ご指導をお願いいたします。

関連するQ&A