質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

3回答

5213閲覧

access フィールドをレコードにする

ma2_ra

総合スコア16

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2018/03/23 05:34

次のような横にフィールドがやたらに並ぶ長いテーブルがあり、(T3)
会員番号ごとに、任意の週数で売上合計を出したいので、
T4のような形になっていてほしいのに、、、、と思っています。

手っ取り早く簡単にする方法はないでしょうか。
T3には会員番号が追加されるのでレコードは増えますが、
週数はmax124で固定です。

T3
会員番号|1週目|2週目|3週目|・・・|124週目
1256662|3025|0|4018|・・・|
1256663|2021|10800|0|・・・|
1260555|0|401|20250|・・・|

T4
会員番号|週数|売上
1256662|1|3025
1256662|2|0
1256662|3|4018
1256663|1|2021
1256663|2|10800
1256663|3|0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

VBAで、追加クエリを124回繰り返せばいいのでは。

vba

1Dim i As Long 2 3For i = 1 to 124 4 CurrentDB.Execute "INSERT INTO T4 ( 会員番号, 週数, 売上 ) " & _ 5 "SELECT 会員番号, " & i & " AS 週数, [" & i & "週目] AS 売上 from T3;" 6Next

投稿2018/03/23 10:53

編集2018/03/26 07:04
hatena19

総合スコア33620

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2018/03/24 06:06 編集

テーブル作成クエリーの方が良くないですか。 名前の自動修正とかに影響して、問題があるんでしったっけ?
hatena19

2018/03/24 06:48

使い方次第かな。 今回、一回限りなら、テーブル作成クエリで、いいかと思いますが、 今後、データ追加が発生したり、他のテーブルとリレーションを設定したり、など、データベースとして利用するなら、テーブルは事前に作成しておいて、追加クエリでデータを追加する方がいいでしょう。
ma2_ra

2018/03/26 05:52

ありがとうございます。 上記のVBAで出来ました。 (T3のあとの:はとりました、要らないですよね?) データのもとはCSVなので、他の方も提案するように、 CSVを加工して取り込むほうがスマートなのかもしれませんが、 十分です!!
sazi

2018/03/26 07:08 編集

SQLが?と言われていたので、VBAも?かと思ってました。すみません。 では、INSERTのforの前にDELETEもあった方が良いかもしれません。
hatena19

2018/03/26 07:03

> (T3のあとの:はとりました、要らないですよね?) あっ、; のタイプミスですね。なくてもいいです。 回答、修正しておきます。
guest

0

まー私がするなら、CSVかなんかで出力しておいて、pythonかC#かでコード組んで変換してしまうってテですねー
この程度なら、テキストエディタのマクロ程度でもどーにかできそーですね

投稿2018/03/23 10:44

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma2_ra

2018/03/26 06:05

ありがとうございます。 データのもとはCSVなので、 加工して取り込むほうがスマートなのかもしれません。 もうちょっと勉強してからトライしてみます。
guest

0

手っ取り早くというのは無いと思いますが、定番的なものとしてはユニオンクエリーにすることです。

SQL

1select 会員番号, 1 as 週数, 1週目 as 売上 from T3 2union all 3select 会員番号, 2 as 週数, 2週目 as 売上 from T3 456union all 7select 会員番号, 124 as 週数, 124週目 as 売上 from T3

投稿2018/03/23 06:00

sazi

総合スコア25138

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma2_ra

2018/03/23 07:04

ありがとうございます。 select 会員番号, 1 as 週数, 1週目 as 売上 from T3 これを124個、こしらえるわけですね、、、ううう
sazi

2018/03/23 07:19 編集

エクセルで可変数字のところだけ切り出して、オートフィルを利用すればそこまで手間は掛かんないと思います。 A1="union all select 会員番号," C1=" as 週数, " E1="週目 as 売上 from T3" F1=A1 & B1 & C1 & D1 & E1 でB1とD1に 1を入れて、全体をオートフィルで124まで。 あとはF列の値をコピーして整形。 ※VBAで動的にSQLを作るよりはお手軽かと。
ma2_ra

2018/03/23 08:37

ありがとうございます。 やってみたのですが、ダメ?みたいで。 「クエリ式'1週目'の構文エラー:演算子がありません。」 と出ます。 SQLってなに?みたいなレベルなのでやってることがわかりません。
sazi

2018/03/23 08:44

作成したものをコメントに貼り付けて貰えます?
ma2_ra

2018/03/23 08:47

select 会員番号, 1 as 週数, 1週目 as 売上 from T3 union all select 会員番号, 2 as 週数, 2週目 as 売上 from T3 union all select 会員番号, 3 as 週数, 3週目 as 売上 from T3 union all select 会員番号, 4 as 週数, 4週目 as 売上 from T3 union all select 会員番号, 5 as 週数, 5週目 as 売上 from T3 union all select 会員番号, 6 as 週数, 6週目 as 売上 from T3 union all select 会員番号, 7 as 週数, 7週目 as 売上 from T3 union all select 会員番号, 8 as 週数, 8週目 as 売上 from T3 union all select 会員番号, 9 as 週数, 9週目 as 売上 from T3 union all select 会員番号, 10 as 週数, 10週目 as 売上 from T3 union all select 会員番号, 11 as 週数, 11週目 as 売上 from T3 union all select 会員番号, 12 as 週数, 12週目 as 売上 from T3 union all select 会員番号, 13 as 週数, 13週目 as 売上 from T3 union all select 会員番号, 14 as 週数, 14週目 as 売上 from T3 union all select 会員番号, 15 as 週数, 15週目 as 売上 from T3 union all select 会員番号, 16 as 週数, 16週目 as 売上 from T3 union all select 会員番号, 17 as 週数, 17週目 as 売上 from T3 union all select 会員番号, 18 as 週数, 18週目 as 売上 from T3 union all select 会員番号, 19 as 週数, 19週目 as 売上 from T3 union all select 会員番号, 20 as 週数, 20週目 as 売上 from T3 union all select 会員番号, 21 as 週数, 21週目 as 売上 from T3 union all select 会員番号, 22 as 週数, 22週目 as 売上 from T3 union all select 会員番号, 23 as 週数, 23週目 as 売上 from T3 union all select 会員番号, 24 as 週数, 24週目 as 売上 from T3 union all select 会員番号, 25 as 週数, 25週目 as 売上 from T3 union all select 会員番号, 26 as 週数, 26週目 as 売上 from T3 union all select 会員番号, 27 as 週数, 27週目 as 売上 from T3 union all select 会員番号, 28 as 週数, 28週目 as 売上 from T3 union all select 会員番号, 29 as 週数, 29週目 as 売上 from T3 union all select 会員番号, 30 as 週数, 30週目 as 売上 from T3 union all select 会員番号, 31 as 週数, 31週目 as 売上 from T3 union all select 会員番号, 32 as 週数, 32週目 as 売上 from T3 union all select 会員番号, 33 as 週数, 33週目 as 売上 from T3 union all select 会員番号, 34 as 週数, 34週目 as 売上 from T3 union all select 会員番号, 35 as 週数, 35週目 as 売上 from T3 union all select 会員番号, 36 as 週数, 36週目 as 売上 from T3 union all select 会員番号, 37 as 週数, 37週目 as 売上 from T3 union all select 会員番号, 38 as 週数, 38週目 as 売上 from T3 union all select 会員番号, 39 as 週数, 39週目 as 売上 from T3 union all select 会員番号, 40 as 週数, 40週目 as 売上 from T3 union all select 会員番号, 41 as 週数, 41週目 as 売上 from T3 union all select 会員番号, 42 as 週数, 42週目 as 売上 from T3 union all select 会員番号, 43 as 週数, 43週目 as 売上 from T3 union all select 会員番号, 44 as 週数, 44週目 as 売上 from T3 union all select 会員番号, 45 as 週数, 45週目 as 売上 from T3 union all select 会員番号, 46 as 週数, 46週目 as 売上 from T3 union all select 会員番号, 47 as 週数, 47週目 as 売上 from T3 union all select 会員番号, 48 as 週数, 48週目 as 売上 from T3 union all select 会員番号, 49 as 週数, 49週目 as 売上 from T3 union all select 会員番号, 50 as 週数, 50週目 as 売上 from T3 union all select 会員番号, 51 as 週数, 51週目 as 売上 from T3 union all select 会員番号, 52 as 週数, 52週目 as 売上 from T3 union all select 会員番号, 53 as 週数, 53週目 as 売上 from T3 union all select 会員番号, 54 as 週数, 54週目 as 売上 from T3 union all select 会員番号, 55 as 週数, 55週目 as 売上 from T3 union all select 会員番号, 56 as 週数, 56週目 as 売上 from T3 union all select 会員番号, 57 as 週数, 57週目 as 売上 from T3 union all select 会員番号, 58 as 週数, 58週目 as 売上 from T3 union all select 会員番号, 59 as 週数, 59週目 as 売上 from T3 union all select 会員番号, 60 as 週数, 60週目 as 売上 from T3 union all select 会員番号, 61 as 週数, 61週目 as 売上 from T3 union all select 会員番号, 62 as 週数, 62週目 as 売上 from T3 union all select 会員番号, 63 as 週数, 63週目 as 売上 from T3 union all select 会員番号, 64 as 週数, 64週目 as 売上 from T3 union all select 会員番号, 65 as 週数, 65週目 as 売上 from T3 union all select 会員番号, 66 as 週数, 66週目 as 売上 from T3 union all select 会員番号, 67 as 週数, 67週目 as 売上 from T3 union all select 会員番号, 68 as 週数, 68週目 as 売上 from T3 union all select 会員番号, 69 as 週数, 69週目 as 売上 from T3 union all select 会員番号, 70 as 週数, 70週目 as 売上 from T3 union all select 会員番号, 71 as 週数, 71週目 as 売上 from T3 union all select 会員番号, 72 as 週数, 72週目 as 売上 from T3 union all select 会員番号, 73 as 週数, 73週目 as 売上 from T3 union all select 会員番号, 74 as 週数, 74週目 as 売上 from T3 union all select 会員番号, 75 as 週数, 75週目 as 売上 from T3 union all select 会員番号, 76 as 週数, 76週目 as 売上 from T3 union all select 会員番号, 77 as 週数, 77週目 as 売上 from T3 union all select 会員番号, 78 as 週数, 78週目 as 売上 from T3 union all select 会員番号, 79 as 週数, 79週目 as 売上 from T3 union all select 会員番号, 80 as 週数, 80週目 as 売上 from T3 union all select 会員番号, 81 as 週数, 81週目 as 売上 from T3 union all select 会員番号, 82 as 週数, 82週目 as 売上 from T3 union all select 会員番号, 83 as 週数, 83週目 as 売上 from T3 union all select 会員番号, 84 as 週数, 84週目 as 売上 from T3 union all select 会員番号, 85 as 週数, 85週目 as 売上 from T3 union all select 会員番号, 86 as 週数, 86週目 as 売上 from T3 union all select 会員番号, 87 as 週数, 87週目 as 売上 from T3 union all select 会員番号, 88 as 週数, 88週目 as 売上 from T3 union all select 会員番号, 89 as 週数, 89週目 as 売上 from T3 union all select 会員番号, 90 as 週数, 90週目 as 売上 from T3 union all select 会員番号, 91 as 週数, 91週目 as 売上 from T3 union all select 会員番号, 92 as 週数, 92週目 as 売上 from T3 union all select 会員番号, 93 as 週数, 93週目 as 売上 from T3 union all select 会員番号, 94 as 週数, 94週目 as 売上 from T3 union all select 会員番号, 95 as 週数, 95週目 as 売上 from T3 union all select 会員番号, 96 as 週数, 96週目 as 売上 from T3 union all select 会員番号, 97 as 週数, 97週目 as 売上 from T3 union all select 会員番号, 98 as 週数, 98週目 as 売上 from T3 union all select 会員番号, 99 as 週数, 99週目 as 売上 from T3 union all select 会員番号, 100 as 週数, 100週目 as 売上 from T3 union all select 会員番号, 101 as 週数, 101週目 as 売上 from T3 union all select 会員番号, 102 as 週数, 102週目 as 売上 from T3 union all select 会員番号, 103 as 週数, 103週目 as 売上 from T3 union all select 会員番号, 104 as 週数, 104週目 as 売上 from T3 union all select 会員番号, 105 as 週数, 105週目 as 売上 from T3 union all select 会員番号, 106 as 週数, 106週目 as 売上 from T3 union all select 会員番号, 107 as 週数, 107週目 as 売上 from T3 union all select 会員番号, 108 as 週数, 108週目 as 売上 from T3 union all select 会員番号, 109 as 週数, 109週目 as 売上 from T3 union all select 会員番号, 110 as 週数, 110週目 as 売上 from T3 union all select 会員番号, 111 as 週数, 111週目 as 売上 from T3 union all select 会員番号, 112 as 週数, 112週目 as 売上 from T3 union all select 会員番号, 113 as 週数, 113週目 as 売上 from T3 union all select 会員番号, 114 as 週数, 114週目 as 売上 from T3 union all select 会員番号, 115 as 週数, 115週目 as 売上 from T3 union all select 会員番号, 116 as 週数, 116週目 as 売上 from T3 union all select 会員番号, 117 as 週数, 117週目 as 売上 from T3 union all select 会員番号, 118 as 週数, 118週目 as 売上 from T3 union all select 会員番号, 119 as 週数, 119週目 as 売上 from T3 union all select 会員番号, 120 as 週数, 120週目 as 売上 from T3 union all select 会員番号, 121 as 週数, 121週目 as 売上 from T3 union all select 会員番号, 122 as 週数, 122週目 as 売上 from T3 union all select 会員番号, 123 as 週数, 123週目 as 売上 from T3 union all select 会員番号, 124 as 週数, 124週目 as 売上 from T3
sazi

2018/03/23 08:55 編集

失礼しました。項目名は数字から始まるものは[]で括らないとエラーになります。 以下でどうでしょうか。 A1="union all select 会員番号," C1=" as 週数, [" E1="週目] as 売上 from T3"
ma2_ra

2018/03/23 09:35

ありがとうございます。 他のサイトで似たような質問の回答を見つけ、[○週目]でやってみましたが、 「クエリが複雑すぎます」と出て、できませんでした。 週数を減らすとできました。
sazi

2018/03/23 15:48

じゃあ、20個程度のユニオンクエリーをさらにユニオンするということになりますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問