ここではいくつかのSQL転置スレッドを見てきましたが、それらはすべてデータの再構築やデータサマリーを扱っています。私はそれらの状況のいずれにも合致しない、ある程度共通の状況を持っています。 これはMS Accessにあり、リンクテーブルを使用していることに注意してください(更新は許可されず、キーやIDはありません)。MS AccessのためのSQL行と列を転記するためのリンクテーブル
私はリンクテーブルを持っています。長い2行のデータしかありません。 それは、ユニークなビジネスユニット(BU)とそれに対応する年間売上のリストです。
linked_table
F1 F2 F3 F4 F5 ...
-----------------------------
row1 BU11 BU123 BU223 BU2 BU432...
row2 $2345 $0 $50.50 $234 $567.22
私はこのに何とか転置このデータセットが必要になります。
new_table or new_query
BU Sales
---------------
BU11 $2345
BU123 $0
BU223 $50.50
BU2 $234
BU342 $567.22
...
ここでも、リンクAccessテーブル内のデータの2つだけの長い行があります。 私はこのことについて非常に退屈で醜い方法しか見つけられておらず、これを行うより良い方法があるのだろうかと思っていました。私は、私は両方のデータにダミー「共通鍵」が
そしてheaders_qry
F1 F2 F3 F4 F5... KEY
----------------------------------------------
row1 BU11 BU123 BU223 BU2 BU432... UNIQUE123
data_qry
F1 F2 F3 F4 F5... KEY
-----------------------------------------------
row1 $2345 $0 $50.50 $234 $567.22... UNIQUE123
を設定ハードきた2つの別々のクエリ
headers_qry
F1 F2 F3 F4 F5...
------------------------------
row1 BU11 BU123 BU223 BU2 BU432...
data_qry
F1 F2 F3 F4 F5...
------------------------------
row1 $2345 $0 $50.50 $234 $567.22...
にデータの2つの行を分離しました
STEP 1 その共通キーの2つのクエリの間に結合を追加し、何百ものUNIONステートメントで手動でヘッダーとデータのペアをペアにしました。うん!!
SELECT
headers.F1 AS BU_Number,
data.F1 AS BU_Sales
FROM header_data_join_qry UNION ALL
SELECT
headers.F2 AS BU_Number,
data.F2 AS BU_Sales
FROM header_data_join_qry UNION ALL
SELECT
...
headers.F100 AS BU_Number,
data.F100 AS BU_Sales
FROM header_data_join_qry UNION ALL;
は、MS Accessのは、これらの複数のUNION ALLクエリを処理することはできませんし、私は100の周りに到達したら、それは、SQL文には複雑すぎるエラーを与え始め、退屈で醜いこれだけではなく。
リンク元テーブルとMS ACCESS SQL環境の制限を考慮して、これをよりうまく処理する方法はありますか?本当にありがとう!
を適合させることができますか?私はUNIONでSELECTラインの制限が50であると思いました。私が知っている唯一の選択肢は、VBAが一時テーブルにレコードを書き込むことです - テーブルは永久的です、データは一時的です。 – June7
3番目の回答を見てください[ここ](https:// stackoverflow。com/questions/7255423/how-to-simulate-unpivot-in-access-2010)を参照してください。おそらくそれはあなたを助けるでしょう – cha
私は基本的に2つのサブクエリに分離して100になった。その後、私はUNIONも同様に2人にしました。これにより、ACCESS許容値が合計50を超えて上がります。 –