- 締切済み
Accessで縦と横を入れ替えたい
りんご みかん ぶどう バナナ いちご 佐藤 2 1 1 1 1 鈴木 1 1 1 田中 1 2 1 上記のようなテーブルがあるのですが、これを下記のようにしたいです。 担当者 種別 田中 りんご 鈴木 りんご 佐藤 りんご 田中 みかん 佐藤 みかん 佐藤 ぶどう 鈴木 バナナ 佐藤 バナナ 田中 いちご 鈴木 いちご 佐藤 いちご 佐藤 りんご 田中 みかん 種別の隣に数量がきてもOKです。 ご教授お願い致します。
- aaabbbccc05
- お礼率37% (6/16)
- その他(プログラミング・開発)
- 回答数16
- ありがとう数13
- みんなの回答 (16)
- 専門家の回答
みんなの回答
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【補足】追加クエリの書き方! INSERT INTO テーブル3 SELECT * FROM クエリ33; 先のユニオンクエリを"クエリ33"だとします。その場合、これで添付図のようにテーブルに行が追加されます。
- piroin654
- ベストアンサー率75% (692/917)
わざわざデータの並びが特徴的に表記してあるので、 取得するデータの方向と並びを質問の例から推論すると、 1 出発は最初のフィールドの一番最後のレコードを取得 2 同じフィールドを最初のレコードに向かってレコードを取得 3 次のフィールドに移動し、一番最後のレコードを取得し、2を行なう 4 一度、全レコードの全フィールドを取り出したら、再び1に戻り フィールドの値が+1のものを検索してレコードを取得 5 以降繰り返し のようなことですかね。テーブルのデータの並びが よく分からないので、並び替えのデータからすると、 以下のようなことでいいですか。 りんご みかん ぶどう バナナ いちご 佐藤 2 1 1 1 1 鈴木 1 1 1 田中 1 2 1 そこで、上記のテーブルのフィールド名を付け加えて、 名前 りんご みかん ぶどう バナナ いちご 佐藤 2 1 1 1 1 鈴木 1 1 1 田中 1 2 1 のように、します。このテーブルの名前を「テーブルA」とします。 要するにテーブルのデザインでいえば、 名前 テキスト型 りんご 数値型 みかん 数値型 ぶどう 数値型 バナナ 数値型 いちご 数値型 次に並び替えたデータを受け取るテーブルを「テーブルB」とします。 フィールドは、 ID オートナンバー 担当者 テキスト型 種別 テキスト型 数量 数値型 とします。IDは主キーにはしません。並びを確保する ために使用します。 以下のコードを標準モジュールに貼り付け、保存し 実行してみてください。 なお、DAOを使っているので、コード表のツールから 参照設定を選択し、 Microsoft DAO xx Object Library にチェックが入っているか確認してください。 Sub test() Dim db As DAO.Database Dim rs1 As DAO.Recordset Dim rs2 As DAO.Recordset Dim i As Long Dim iMax As Long Dim j As Long Dim k As Long Set db = CurrentDb Set rs1 = db.OpenRecordset("テーブルA") Set rs2 = db.OpenRecordset("テーブルB", dbOpenDynaset) iMax = 1 rs1.MoveFirst Do Until rs1.EOF For i = 1 To rs1.Fields.Count - 1 If Not IsNull(rs1.Fields(i)) Then If rs1.Fields(i).Value > iMax Then iMax = rs1.Fields(i).Value End If End If Next i rs1.MoveNext Loop For j = 1 To iMax For k = 1 To rs1.Fields.Count - 1 rs1.MoveLast Do Until rs1.BOF If Not IsNull(rs1.Fields(k)) Then If rs1.Fields(k).Value >= j Then rs2.AddNew rs2!担当者 = rs1!名前 rs2!種別 = rs1.Fields(k).Name rs2!数量 = rs1.Fields(k).Value rs2.Update End If End If rs1.MovePrevious Loop Next k Next j rs1.Close: Set rs1 = Nothing rs2.Close: Set rs2 = Nothing db.Close: Set db = Nothing End Sub なお、「テーブルA」レコードの順序は確保されているものとします。 単純に「横のものを縦に」ということであれば、こんなまわりくどいことを する必要はありませんが。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【お詫び】バグがありました! × SELECT 担当者, DBLookup("SELECT 'りんご' AS 種別 FROM Test3 WHERE Nz([りんご])>0") As 種別, りんご As 数量 FROM Test3 〇 SELECT 担当者, DBLookup("SELECT 'りんご' AS 種別 FROM Test3") As 種別, りんご As 数量 FROM Test3 WHERE Nz([りんご])>0 テストはしてませんが、WHERE 節の位置が間違っていました。ですから、0でもレコードが発生しています。0でも発生して良いのであれば 〇 SELECT 担当者, DBLookup("SELECT 'りんご' AS 種別 FROM Test3") As 種別, りんご As 数量 FROM Test3 でOKかと思います。(多分)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【補足の補足】As 数量 SELECT 担当者, DBLookup("SELECT 'りんご' AS 種別 FROM Test3 WHERE Nz([りんご])>0") As 種別, りんご As 数量 FROM Test3
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【補足】UNIONクエリの補足 SELECT 担当者, DBLookup("SELECT 'りんご' AS 種別 FROM Test3 WHERE Nz([りんご])>0") As 種別, りんご FROM Test3 1、 As 種別・・・欠落していました。 2、ORDER BY 節・・・指定していません。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【VBA】 VBAで変換・登録するのが一番確実で実際的かと思います。次は、その第一ステップのテスト結果です。 >ID:1;担当者:佐藤;りんご:2;みかん:1;ぶどう:1;バナナ:1;いちご:1; DXSelect()の戻り値を手がかりに DoCmd.RunSQL SQL文 で、新しいテーブルに行を挿入すれば目的は達成できます。 【UNIONクエリ】 もちろん、簡便にUNIONクエリを利用する手もなきにしもあらずです。 SELECT 担当者, DBLookup("SELECT 'りんご' AS 種別 FROM Test3 WHERE Nz([りんご])>0"), りんご FROM Test3 UNION SELECT 担当者, DBLookup("SELECT 'みかん' AS 種別 FROM Test3 WHERE Nz([みかん])>0"), みかん FROM Test3 UNION SELECT 担当者, DBLookup("SELECT 'ぶどう' AS 種別 FROM Test3 WHERE Nz([ぶどう])>0"), ぶどう FROM Test3 UNION SELECT 担当者, DBLookup("SELECT 'バナナ' AS 種別 FROM Test3 WHERE Nz([バナナ])>0"), バナナ FROM Test3 UNION SELECT 担当者, DBLookup("SELECT 'いちご' AS 種別 FROM Test3 WHERE Nz([いちご])>0"), いちご FROM Test3; こういうUNIONクエリの結果を INSERT するという手もあります。 ※DBLookup() DBLookup()は、UNIONクエリを安直に書くためのユーザー関数です。 Public Function DBLookup(ByVal strQuerySQL As String, _ Optional ByVal ReturnValue = Null) As Variant On Error GoTo Err_DBLookup Dim DataValue Dim rst As ADODB.Recordset Set rst = New ADODB.Recordset With rst .Open strQuerySQL, _ CurrentProject.Connection, _ adOpenStatic, _ adLockReadOnly If Not .BOF Then .MoveFirst DataValue = .Fields(0) End If End With Exit_DBLookup: On Error Resume Next rst.Close Set rst = Nothing DBLookup = IIf(Len(DataValue & ""), DataValue, ReturnValue) Exit Function Err_DBLookup: MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _ "・Err.Description=" & Err.Description & Chr$(13) & _ "・SQL Text=" & strQuerySQL, _ vbExclamation, " 関数エラーメッセージ" Resume Exit_DBLookup End Function
- 1
- 2
関連するQ&A
- EXCELピボットテーブルの集計項目を追加したい
ピボットテーブルで集計した結果に集計項目を追加したいのですが、 可能でしょうか? 追加したい項目は、数量合計÷担当件数です。 <元データ> 担当 支店 種目 数量 川上 東京 りんご 50 川上 名古屋 りんご 20 川上 埼玉 みかん 10 川上 埼玉 りんご 5 鈴木 大阪 りんご 25 鈴木 神戸 みかん 10 佐藤 福岡 みかん 30 <ピボットテーブル> みかん みかん りんご りんご 担当 合計数量 件数 合計数量 件数 佐藤 30 1 川上 10 1 75 3 鈴木 10 1 25 1 計 50 3 100 4 上記このテーブルに「みかん合計数量÷みかん件数」「りんご合計数量÷りんご件数」で 計算した項目「みかん平均」「りんご平均」を追加して、以下のようにしたいと思っています。 担当 みかん みかん平均 りんご りんご平均 佐藤 30 30.0 川上 10 10.0 75 25.0 鈴木 10 10.0 25 25.0 総計 50 16.7 100 25.0 以上
- ベストアンサー
- オフィス系ソフト
- エクセルでの重複データの抽出とフラグ
エクセルでのデータの作成で困っております 下記のように「送り主」と「届け先」の重複データを抽出し数字を与えたいのですが、どうしてよいか判らず困っております。 教えて頂けますでしょうか ギフト配送先のデータ抽出 送り主 届け先 商品 田中太郎 1 佐藤花子(りんご1個) 田中太郎 1 佐藤花子(みかん1個) 田中太郎 1 佐藤花子(バナナ1本) 田中太郎 2 山本○子(みかん1個) 田中太郎 2 山本○子(バナナ1本) 山本○次 1 鈴木△子(りんご詰め合わせ) 山本○次 2 高橋×子(みかん詰め合わせ) 山本○次 3 田中□子(りんご詰め合わせ) 宜しくお願い致します
- ベストアンサー
- その他(学問・教育)
- 1対多結合で多を絞り込み条件とするSQLについて
sqlalchemy を使用 親テーブル id name 1 スズキ 2 タナカ 3 マイク 4 ルイ 5 ジャック 子テーブル id user_id pname number 1 1 リンゴ 2 2 1 バナナ 1 3 1 ブドウ 3 4 2 リンゴ 2 5 2 バナナ 2 6 2 ブドウ 1 7 3 イチゴ 5 8 3 バナナ 3 9 3 ブドウ 1 リンゴを持っている且バナナのnumberで並べ替えしたいので実現方法おしえていただければと思います。
- ベストアンサー
- オフィス系ソフト
- エクセルでの質問です
毎度お世話になっております。 エクセルで下記のような事は出来ますでしょうか? シート1に品名、数量が記載されておりますがシート2に抽出された結果のみ表示する 例)シート1 りんご 100 みかん 200 バナナ 200 りんご 200 バナナ 300 いちご 200 シート2(結果表示) りんご 300 みかん 200 バナナ 500 いちご 200 と、それぞれの合計数量を抽出結果として表示して管理を行いたいと思ってます。 教えてください
- ベストアンサー
- Windows XP
- 一つのテーブルの複数のフィールドから抜き出す方法について
一つのテーブルの複数のフィールドから抜き出す方法について 例えば下記のようなテーブルがあったとします。 1 2 3 4 A商店 りんご みかん バナナ B商店 みかん イチゴ くり パイナップル C商店 イチゴ パイナップル バナナ D商店 イチゴ バナナ りんご のようなテーブルがありフィールド1~4いずれかにみかんを含むクエリーを作成し次のような結果をACCESSで作成したいのですが、簡単な方法はあるのでしょうか? 1 2 3 4 A商店 りんご みかん バナナ B商店 みかん イチゴ くり パイナップル よろしくお願いいたします。 尚、使用しているデータベースはACCESS2000です。
- ベストアンサー
- その他(データベース)
- Accessでテーブルの文字列フィールドを連結する
次のようなフィールドが2列のデータがあります。 1:りんご 1:みかん 1:バナナ 2:みかん 2:ぶどう 3:りんご 3:バナナ それを 1:りんご、みかん、バナナ 2:みかん、ぶどう 3:りんご、バナナ とクエリーでまとめたいのですが どのようにしたらよろしいでしょうか?
- 締切済み
- その他(データベース)
- 重複データを除外する際に条件をつけたい
下記(A)の状態から(B)のような結果を出したくて、group by やサブクエリなどで試行錯誤しましたが、 欲しい結果が取れず困っております。 どなたかわかる方、ご教授いただけましたら助かります。よろしくお願いいたします。 (MYSQLバージョン:4.1.21) (A) NO|入荷日付|種別|名称 3|20080730|2|りんご 4|20080801|2|りんご 5|20080728|2|りんご 8|20080801|2|りんご 10|20080812|2|りんご 7|20080811|25|ぶどう 9|20080811|25|ぶどう 1|20080731|36|みかん 2|20080728|36|みかん 6|20080808|50|いちご (B)抽出結果 NO|入荷日付|種別|名称 10|20080812|2|りんご 9|20080811|25|ぶどう 1|20080731|36|みかん 6|20080808|50|いちご ■抽出条件 ・【種別】ごとに【入荷日付】が最新のデータを1件だけ抽出。 ・ NO:7やNO:9のデータのように、【種別】と【入荷日付】が同じ場合は、【NO】が最大のデータを抽出。
- ベストアンサー
- MySQL
- 行と列の条件に一致したら印を付けたい
シート1に名前と商品のリストがあります 名前 商品 佐藤 りんご 佐藤 みかん 佐藤 ぶどう 加藤 みかん 山本 バナナ 山本 みかん 小林 りんご 小林 ぶどう 小林 みかん 小林 バナナ シート2の行に名前、列に商品名の表があり、シート1のリストを元に 行と列の条件に一致した箇所に印をつけたいのですが、 何か適当な関数はありますでしょうか? りんご みかん ぶどう バナナ 佐藤 加藤 山本 小林
- ベストアンサー
- オフィス系ソフト
- エクセルで、スペースで区切られた言葉をわける。
たとえば、セルのA1に、 りんご■バナナ■みかん■ぶどう■いちご (■=半角スペース) とあったときに、 B1のセルにりんご C1のセルにバナナ D1のセルにみかん E1のセルにぶどう F1のセルにいちご となるようにB1~F1に入力する関数があれば教えてください。
- ベストアンサー
- オフィス系ソフト
- エクセルで何件もあるコードと商品の件数を調べたい
エクセルで コード 名称 009 りんご 005 みかん 009 りんご 003 バナナ 010 イチゴ 005 みかん 003 バナナ 001 ぶどう : : というようなデータが一万件近くあって、 コード 商品 件数 001 ぶどう ○ 002 すもも △ 003 バナナ □ : : というように、コード順に、それぞれの商品の件数を調べてこういった表を作りたいのですがどうしたらいいでしょうか。
- 締切済み
- オフィス系ソフト