Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Microsoft 365)
横持ちデータを縦に変換
投稿日時: 23/04/07 17:10:22
投稿者: やっぱりカープ

いつもお世話になります。
横にS-AからS-Jまで10回繰り返しています。
区分  品番  色 S-A 数量A S-B 数量B・・・・S-J 数量J
受注残 #001 Z10 M  10   L  5 ・・・・・8L  7
受注残 #005 A10 M  1    L  2 ・・・・・8L  3
在庫数 #001 Z10 M  5    L  7 ・・・・・8L  4
 
上記、横持データをこのように表示したいのです。
よろしくお願いいたします。
 
区分  品番  色  サイズ  数量
受注残 #001  Z10  M    10
受注残 #001  Z10  L    5
受注残 #001  Z10  8L    7
受注残 #005  A10  M    1
受注残 #005  A10  L    2
受注残 #005  A10  8L    3
在庫数 #001  Z10  M    5
在庫数 #001  Z10  L    7
在庫数 #001  Z10  8L    4
 
 
  
 
 

回答
投稿日時: 23/04/07 17:55:37
投稿者: sk

( SQL ビュー)
---------------------------------------------------------------
SELECT [テーブル名].[区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       [テーブル名].[S-A] AS [サイズ],
       [テーブル名].[数量A] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT [テーブル名].[区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       [テーブル名].[S-B] AS [サイズ],
       [テーブル名].[数量B] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT [テーブル名].[区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       [テーブル名].[S-C] AS [サイズ],
       [テーブル名].[数量C] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT [テーブル名].[区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       [テーブル名].[S-D] AS [サイズ],
       [テーブル名].[数量D] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT [テーブル名].[区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       [テーブル名].[S-E] AS [サイズ],
       [テーブル名].[数量E] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT [テーブル名].[区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       [テーブル名].[S-F] AS [サイズ],
       [テーブル名].[数量F] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT [テーブル名].[区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       [テーブル名].[S-G] AS [サイズ],
       [テーブル名].[数量G] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT [テーブル名].[区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       [テーブル名].[S-H] AS [サイズ],
       [テーブル名].[数量H] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT [テーブル名].[区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       [テーブル名].[S-I] AS [サイズ],
       [テーブル名].[数量I] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT [テーブル名].[区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       [テーブル名].[S-J] AS [サイズ],
       [テーブル名].[数量J] AS [数量]
FROM [テーブル名];
---------------------------------------------------------------
 
以上のようなユニオンクエリを作成なさればよろしいでしょう。

投稿日時: 23/04/10 10:51:26
投稿者: やっぱりカープ

ありがとうございます
  
説明不足で申し訳ありませんでした。
一行に受注残と出荷数があります
受注残はS-AからS-E
出荷数はS-FからS-Jとなっています
  
区分  品番  色 S-A 数量A S-B 数量B・・・・S-J 数量J
受注残 #005  A10 M  1    L  2 ・・・・・8L  3
在庫数 #001  Z10 M  5    L  7 ・・・・・8L  4
  
  
S-AからS-Eの区分は受注残で良いのですが、
S-FからS-Jは区分を出荷にしたいのですが、ご教授よろしくお願い致します

回答
投稿日時: 23/04/10 11:29:24
投稿者: sk

引用:
一行に受注残と出荷数があります

引用:
区分  品番  色 S-A 数量A S-B 数量B・・・・S-J 数量J
受注残 #005  A10 M  1    L  2 ・・・・・8L  3
在庫数 #001  Z10 M  5    L  7 ・・・・・8L  4

実際の値が"在庫数"と"出荷数"のどちらなのかはともかくとして。
 
引用:
受注残はS-AからS-E
出荷数はS-FからS-Jとなっています

・「[区分]の値が "受注残" であるレコードを抽出し、
 それらのレコードの[区分], [品番], [色] 及び
 フィールド名の接尾辞が "A", "B", "C", "D", "E" の
 いずれかであるフィールドの組み合わせを接尾辞ごとに抜き出した結果」と、
 「[区分]の値が "在庫数"(または"出荷数") であるレコードを抽出し、
 それらのレコードの[区分], [品番], [色] 及びフィールド名の
 接尾辞が "F", "G", "H", "I", "J" のいずれかであるフィールドの
 組み合わせを接尾辞ごとに抜き出した結果」を併合したい。
 
・「[品番], [色] 及びフィールド名の接尾辞が
 "A", "B", "C", "D", "E" のいずれかであるフィールドの
 組み合わせを接尾辞ごとに抜き出し、"受注残" という文字列を
 新たな[区分]として返した結果(元の[区分]の値は無視)」と
 「[品番], [色] 及びフィールド名の接尾辞が
 "F", "G", "H", "I", "J" のいずれかであるフィールドの
 組み合わせを接尾辞ごとに抜き出し、"在庫数"(または"出荷数")
 という文字列を新たな[区分]として返した結果(元の[区分]の値は無視)を
 併合したい。
 
どちらの意味でおっしゃっているのでしょうか。
 
例えば、[区分]の値が "受注残" であるレコードについては、
[S-F]から[数量J]までの全てのフィールドの値が Null であり、
それらのフィールドに関しては抜き出す必要がないならば
前者ということになると思われますが。

投稿日時: 23/04/10 13:25:59
投稿者: やっぱりカープ

本当に説明ベタですみません。
 
区分  品番  色 S-A 数量A S-B 数量B・・・・S-J 数量J
受注残 #001 Z10 M  10   L  5 ・・・・・8L  7
在庫数 #001 Z10 M  5    L  7 ・・・・・8L  4
 
受注残、S-A 数量AからS-E 数量E までの区分は"受注残"
受注残、S-F 数量FからS-J 数量J の区分は新たに"出荷数"と返したい
 
在庫数 S-A 数量AからS-E 数量E までの区分は"在庫数"
在庫数 S-F 数量FからS-J 数量J の区分は無視
 
よろしくお願い致します
 
 
 

回答
投稿日時: 23/04/10 14:29:28
投稿者: sk

引用:
在庫数 S-A 数量AからS-E 数量E までの区分は"在庫数"
在庫数 S-F 数量FからS-J 数量J の区分は無視

それはつまり、[区分]の値が "在庫数" であるレコードについては
その[区分]の値をそのまま返せばよい、ということでしょうか。
(フィールド名の接尾辞が同じであるフィールドの組み合わせを
10 件のレコードとして展開し、その際の[区分]の値は元のまま
"在庫数"とする)
 
それとも、フィールド[S-F]から[数量J]までの値は返さなくてもよい
ということでしょうか。
(フィールド名の接尾辞が "A", "B", "C", "D", "E" のいずれかである
フィールドの組み合わせに絞り込み、5 件のレコードとして展開する)

投稿日時: 23/04/10 14:58:08
投稿者: やっぱりカープ

お世話になります。
説明がうまくできなくて申し訳ありません
 
[区分]の値が "在庫数" であるレコードについては
その[区分]の値をそのまま返せばよいということです。
 
よろしくお願いします。

回答
投稿日時: 23/04/10 15:12:30
投稿者: sk

引用:
受注残、S-A 数量AからS-E 数量E までの区分は"受注残"
受注残、S-F 数量FからS-J 数量J の区分は新たに"出荷数"と返したい

引用:
[区分]の値が "在庫数" であるレコードについては
その[区分]の値をそのまま返せばよい

ではとりあえず、次のようなユニオンクエリを実行し、
各レコードの[区分]の値が上記の通りに返されているかどうかを
確認してみて下さい。
 
( SQL ビュー)
-------------------------------------------------------------
SELECT [テーブル名].[区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       "A" AS [フィールド名の接尾辞],
       [テーブル名].[S-A] AS [サイズ],
       [テーブル名].[数量A] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT [テーブル名].[区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       "B" AS [フィールド名の接尾辞],
       [テーブル名].[S-B] AS [サイズ],
       [テーブル名].[数量B] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT [テーブル名].[区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       "C" AS [フィールド名の接尾辞],
       [テーブル名].[S-C] AS [サイズ],
       [テーブル名].[数量C] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT [テーブル名].[区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       "D" AS [フィールド名の接尾辞],
       [テーブル名].[S-D] AS [サイズ],
       [テーブル名].[数量D] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT [テーブル名].[区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       "E" AS [フィールド名の接尾辞],
       [テーブル名].[S-E] AS [サイズ],
       [テーブル名].[数量E] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT IIf([テーブル名].[区分]="受注残","出荷数",[テーブル名].[区分]) AS [区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       "F" AS [フィールド名の接尾辞],
       [テーブル名].[S-F] AS [サイズ],
       [テーブル名].[数量F] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT IIf([テーブル名].[区分]="受注残","出荷数",[テーブル名].[区分]) AS [区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       "G" AS [フィールド名の接尾辞],
       [テーブル名].[S-G] AS [サイズ],
       [テーブル名].[数量G] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT IIf([テーブル名].[区分]="受注残","出荷数",[テーブル名].[区分]) AS [区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       "H" AS [フィールド名の接尾辞],
       [テーブル名].[S-H] AS [サイズ],
       [テーブル名].[数量H] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT IIf([テーブル名].[区分]="受注残","出荷数",[テーブル名].[区分]) AS [区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       "I" AS [フィールド名の接尾辞],
       [テーブル名].[S-I] AS [サイズ],
       [テーブル名].[数量I] AS [数量]
FROM [テーブル名]
UNION ALL
SELECT IIf([テーブル名].[区分]="受注残","出荷数",[テーブル名].[区分]) AS [区分],
       [テーブル名].[品番],
       [テーブル名].[色],
       "J" AS [フィールド名の接尾辞],
       [テーブル名].[S-J] AS [サイズ],
       [テーブル名].[数量J] AS [数量]
FROM [テーブル名];
-------------------------------------------------------------

投稿日時: 23/04/10 16:37:33
投稿者: やっぱりカープ

思ってた通りに表示されました、
ありがとうございました。