Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1329 / 2272 ツリー ←次へ | 前へ→

【7619】データの並べ替えについて SinjiM 06/3/30(木) 20:58 質問[未読]
【7623】Re:データの並べ替えについて Gin_II 06/3/30(木) 23:06 発言[未読]
【7627】Re:データの並べ替えについて SinjiM 06/3/31(金) 10:54 質問[未読]
【7635】Re:データの並べ替えについて 小僧 06/4/2(日) 20:19 発言[未読]
【7652】Re:データの並べ替えについて SinjiM 06/4/6(木) 8:36 質問[未読]
【7659】Re:データの並べ替えについて 小僧 06/4/6(木) 16:37 回答[未読]
【7674】Re:データの並べ替えについて SinjiM 06/4/11(火) 12:45 質問[未読]
【7676】Re:データの並べ替えについて 小僧 06/4/12(水) 9:54 回答[未読]
【7683】Re:データの並べ替えについて SinjiM 06/4/13(木) 7:49 質問[未読]
【7684】Re:データの並べ替えについて SinjiM 06/4/13(木) 7:51 お礼[未読]

【7619】データの並べ替えについて
質問  SinjiM  - 06/3/30(木) 20:58 -

引用なし
パスワード
   こんばんは
難しい問題に悩まされて、SOSを求めています、よろしくお願いします。

下のテーブルがあります。
name    code    unit_I    unit_II    unit_III    unit_IV
name1


name2


以下のように並べ替えしたいと思います。わかる方がいらっしゃいましたら、
ご伝授ください。
____________________________________________________________________   
_____|__________name1_______________|_____________name2_____________|・・
code unit_I unit_II unit_III unit_IV unit_I unit_II unit_III unit_IV
--------------------------------------------------------------------

【7623】Re:データの並べ替えについて
発言  Gin_II  - 06/3/30(木) 23:06 -

引用なし
パスワード
   >下のテーブルがあります。
>name    code ・・・

Name FLD1 FLD2 FLD3
--------------------
AAA   1  2  3
BBB   4  5  6
CCC   7  8  9

とあった場合、どこで、どのように表示されればいいのでしょうか?

レポートでなら、複数列印刷することができます。

【7627】Re:データの並べ替えについて
質問  SinjiM  - 06/3/31(金) 10:54 -

引用なし
パスワード
   Gin_II さん
早速な回答を有難うございます。
以下のようなイメージを並べ替えたいです。

Code  Name FLD1 FLD2 FLD3
--------------------------
code1  AAA   1  2  3
code1  BBB   4  5  6
code1  CCC   7  8  9



      AAA      BBB      CCC
--------------------------------------------------
Code|FLD1|FLD2|FLD3|FLD1|FLD2|FLD3|FLD1|FLD2|FLD3|
--------------------------------------------------
code1 1  2  3  4  5  6  7  8  9

クエリ(並べ替え後)を作りたいです。

【7635】Re:データの並べ替えについて
発言  小僧  - 06/4/2(日) 20:19 -

引用なし
パスワード
   ▼SinjiM さん、Gin_II さん
こんばんは。

>以下のようなイメージを並べ替えたいです。
>
>Code  Name FLD1 FLD2 FLD3
>--------------------------
>code1  AAA   1  2  3
>code1  BBB   4  5  6
>code1  CCC   7  8  9
>・
>・
>
>      AAA      BBB      CCC
>--------------------------------------------------
>Code|FLD1|FLD2|FLD3|FLD1|FLD2|FLD3|FLD1|FLD2|FLD3|
>--------------------------------------------------
>code1 1  2  3  4  5  6  7  8  9
>
>クエリ(並べ替え後)を作りたいです。

上記のようなデータの持ち方はデータベースとして相応しくありません。
(データベースの正規化について調べてみて下さい。)

どうしても上記のように結果を出したいのであれば

TRANSFORM Max(P.FLD1) AS FLD1の最大
SELECT P.code
FROM [
SELECT
テーブル名.code,    
テーブル名.name & "_" & テーブル名.FLD1 AS FLD0,
テーブル名.FLD1
FROM テーブル名
UNION ALL
SELECT
テーブル名.code,
テーブル名.name & "_" & テーブル名.FLD2 AS 式1,
テーブル名.FLD2
FROM テーブル名
UNION ALL
SELECT
テーブル名.code,
テーブル名.name & "_" & テーブル名.FLD3 AS 式1,
テーブル名.FLD3
FROM テーブル名
]. AS P
GROUP BY P.code
PIVOT P.FLD0;

上記 SQL をクエリの SQL ビューに貼り付けて結果を確認されてみて下さい。

【7652】Re:データの並べ替えについて
質問  SinjiM  - 06/4/6(木) 8:36 -

引用なし
パスワード
   小僧さん
 回答をいただきありがとうございます。以下のように
すこしアレンジして、動かしました。
問題ありません。データの持ち方はやはり問題ありますので、見直しします。
TRANSFORMの使い方について、教えていただきたいです。

TRANSFORM Max(P.FLD1) AS FLD1の最大
の「Max(P.FLD1)」の役割はなんでしょうか?

>TRANSFORM Max(P.FLD1) AS FLD1の最大
>SELECT P.code
>FROM [
>SELECT
>テーブル名.code,    
>テーブル名.name & "_" & テーブル名.FLD1 AS FLD0,
  修正⇒テーブル名.name & "_" & "FLD1" AS FLD0,
>テーブル名.FLD1
>FROM テーブル名
>UNION ALL
>SELECT
>テーブル名.code,
>テーブル名.name & "_" & テーブル名.FLD2 AS 式1,
  修正⇒テーブル名.name & "_" & "FLD2" AS FLD0,
>テーブル名.FLD2
>FROM テーブル名
>UNION ALL
>SELECT
>テーブル名.code,
>テーブル名.name & "_" & テーブル名.FLD3 AS 式1,
  修正⇒テーブル名.name & "_" & "FLD3" AS FLD0,
>テーブル名.FLD3
>FROM テーブル名
>]. AS P
>GROUP BY P.code
>PIVOT P.FLD0;

データの持ち方はやはり問題ありますので、見直しします。

【7659】Re:データの並べ替えについて
回答  小僧  - 06/4/6(木) 16:37 -

引用なし
パスワード
   ▼SinjiM さん:
こんにちは。

>の「Max(P.FLD1)」の役割はなんでしょうか?

TRANSFORM句 は 集計(グループ化)をして横展開するよう役割があります。
SinjiM さんがご提示された様なデータですと特に問題はないのですが

>Name FLD1 FLD2 FLD3
>--------------------
>AAA   1  2  3



Name FLD1 FLD2 FLD3
--------------------
AAA   1  2  3
AAA   4  5  6


のようなデータである場合、合計を求めるのであれば Sum
最大値ならば Max といった様な集計関数を使う事になります。

SinjiMさんの場合、Nameに対して 1つずつしかデータが存在しない為、
最大値でも最小値でも合計でも全て同じ結果を返すため
Max以外の集計関数でも同じ結果が返ると思います。

【7674】Re:データの並べ替えについて
質問  SinjiM  - 06/4/11(火) 12:45 -

引用なし
パスワード
   小僧さん
こんにちは。「TRANSFORM Max(P.FLD1)」役割の説明について、
ありがとうございました。
下記のコードに判断条件を設ける場合は、どのように対応
したら、よいでしょうか?よろしくお願いします。

例えば、FLD1、FLD2、FLD3ともにゼロのレコードを除外する場合

>TRANSFORM Max(P.FLD1) AS FLD1の最大
>SELECT P.code
>FROM [
>SELECT
>テーブル名.code,    
>テーブル名.name & "_" & テーブル名.FLD1 AS FLD0,
>テーブル名.FLD1
>FROM テーブル名
>UNION ALL
>SELECT
>テーブル名.code,
>テーブル名.name & "_" & テーブル名.FLD2 AS 式1,
>テーブル名.FLD2
>FROM テーブル名
>UNION ALL
>SELECT
>テーブル名.code,
>テーブル名.name & "_" & テーブル名.FLD3 AS 式1,
>テーブル名.FLD3
>FROM テーブル名
>]. AS P
>GROUP BY P.code
>PIVOT P.FLD0;
>
>上記 SQL をクエリの SQL ビューに貼り付けて結果を確認されてみて下さい。

【7676】Re:データの並べ替えについて
回答  小僧  - 06/4/12(水) 9:54 -

引用なし
パスワード
   ▼SinjiM さん:
おはようございます。

>例えば、FLD1、FLD2、FLD3ともにゼロのレコードを除外する場合

当方が思いつく限りですが、方法は2通りあると思われます。

1) Unionクエリを作る前の段階で除外

TRANSFORM Max(P.FLD1) AS FLD1の最大
SELECT P.Code
FROM [
SELECT テーブル名.Code,
テーブル名.Name & "_FLD1" AS FLD0,
テーブル名.FLD1
FROM テーブル名
WHERE (テーブル名.FLD1=0 And テーブル名.FLD2=0 And テーブル名.FLD3=0)=False
UNION ALL
SELECT テーブル名.Code,
テーブル名.Name & "_FLD2" AS FLD0,
テーブル名.FLD2
FROM テーブル名
WHERE (テーブル名.FLD1=0 And テーブル名.FLD2=0 And テーブル名.FLD3=0)=False
UNION ALL
SELECT テーブル名.Code,
テーブル名.Name & "_FLD3" AS FLD0,
テーブル名.FLD3
FROM テーブル名
WHERE (テーブル名.FLD1=0 And テーブル名.FLD2=0 And テーブル名.FLD3=0)=False
]. AS P
GROUP BY P.Code
PIVOT P.FLD0


2)Unionクエリ結合後に除外

TRANSFORM Max(P.FLD1) AS FLD1の最大
SELECT P.code
FROM [
SELECT
テーブル名.code,
テーブル名.Name,
テーブル名.name & "_FLD1" AS FLD0,
テーブル名.FLD1
FROM テーブル名
UNION ALL
SELECT
テーブル名.code,
テーブル名.Name,
テーブル名.name & "_FLD2" AS FLD0,
テーブル名.FLD2
FROM テーブル名
UNION ALL
SELECT
テーブル名.code,
テーブル名.Name,
テーブル名.name & "_FLD3" AS FLD0,
テーブル名.FLD3
FROM テーブル名
]. AS P
INNER JOIN テーブル名
ON (P.code = テーブル名.Code) AND (P.Name = テーブル名.Name)
WHERE
([テーブル名].[FLD1]=0 And [テーブル名].[FLD2]=0 And [テーブル名].[FLD3]=0)=False
GROUP BY P.code,
[テーブル名].[FLD1]=0 And [テーブル名].[FLD2]=0 And [テーブル名].[FLD3]=0
PIVOT P.FLD0;


条件抽出に「FLD1=0」かつ「FLD2=0」かつ「FLD3=0」が偽(笑)という
何とも複雑な SQL文を書いておりますが、
例えば 各FLDの値はマイナスにならない、という仕様があれば

FLD1 + FLD2 + FLD3 > 0

のような単純な WEHRE句 も使えるかと思われます。

【7683】Re:データの並べ替えについて
質問  SinjiM  - 06/4/13(木) 7:49 -

引用なし
パスワード
   小僧さん
おはようございます。
問題解決!
本当にありがとうございました。

【7684】Re:データの並べ替えについて
お礼  SinjiM  - 06/4/13(木) 7:51 -

引用なし
パスワード
   チェック忘れました

1329 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078228
(SS)C-BOARD v3.8 is Free