Access VBA質問箱 IV

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

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


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

【11667】データの有無で判定 Mr.Child 10/6/1(火) 13:00 質問[未読]
【11668】Re:データの有無で判定 超初心者 10/6/1(火) 13:31 発言[未読]
【11669】Re:データの有無で判定 再度すみません Mr.Child 10/6/1(火) 14:20 質問[未読]
【11670】Re:データの有無で判定 再度すみません 超初心者 10/6/1(火) 15:08 発言[未読]
【11671】Re:データの有無で判定 再度すみません Mr.Child 10/6/1(火) 15:14 お礼[未読]

【11667】データの有無で判定
質問  Mr.Child  - 10/6/1(火) 13:00 -

引用なし
パスワード
   いつもありがとうございます。
厳しい時は助けて頂いております。今回は以下の事例です。

テーブルA
データフィールド名と型
1.顧客id(数値)
2.1回目(数値)
3.2回目(数値)
4.3回目(数値)
5.4回目(数値)
6.5回目(数値)

テーブルA

id  1回目 2回目 3回目 4回目 5回目
a001  1   2   1   5   6
a002  1   1       4
a003     3   4      5
a004  2       3   6  
a005         7
:
:

以上のように、idが存在する間に、最高回数目のフィールドにある
数値だけが欲しいのです。回数目には(null)も存在します。

欲しいデータ

id  結果
a001  6
a002  4
a003  4
a004  6
a005  7




以上ですが、何卒宜しくお願い致します。

【11668】Re:データの有無で判定
発言  超初心者  - 10/6/1(火) 13:31 -

引用なし
パスワード
   ▼Mr.Child さん:

> データフィールド名と型
> 1.顧客id(数値)

> id 〜
> a001 〜

フィールド[顧客id]はテキスト型?
それとも、[id]にするときに加工?

とりあえず、前者として、


SELECT id, MAX(data) AS 結果
FROM (
SELECT 顧客id AS id, [1回目] AS data
FROM テーブルA WHERE ([1回目] Is Not Null)
union
SELECT 顧客id AS id, [2回目] AS data
FROM テーブルA WHERE ([2回目] Is Not Null)
union
SELECT 顧客id AS id, [3回目] AS data
FROM テーブルA WHERE ([3回目] Is Not Null)
union
SELECT 顧客id AS id, [4回目] AS data
FROM テーブルA WHERE ([4回目] Is Not Null)
union
SELECT 顧客id AS id, [5回目] AS data
FROM テーブルA WHERE ([5回目] Is Not Null)
) AS UQ
GROUP BY id

こんな感じでしょうか。


データの保持方法を見直した方が良いかもしれませんね^^;;

【11669】Re:データの有無で判定 再度すみません
質問  Mr.Child  - 10/6/1(火) 14:20 -

引用なし
パスワード
   ▼超初心者 さん:
>▼Mr.Child さん:
>
>> データフィールド名と型
>> 1.顧客id(数値)
>
>> id 〜
>> a001 〜
>
>フィールド[顧客id]はテキスト型?
>それとも、[id]にするときに加工?
>
>とりあえず、前者として、
>
>
>SELECT id, MAX(data) AS 結果
>FROM (
>SELECT 顧客id AS id, [1回目] AS data
>FROM テーブルA WHERE ([1回目] Is Not Null)
>union
>SELECT 顧客id AS id, [2回目] AS data
>FROM テーブルA WHERE ([2回目] Is Not Null)
>union
>SELECT 顧客id AS id, [3回目] AS data
>FROM テーブルA WHERE ([3回目] Is Not Null)
>union
>SELECT 顧客id AS id, [4回目] AS data
>FROM テーブルA WHERE ([4回目] Is Not Null)
>union
>SELECT 顧客id AS id, [5回目] AS data
>FROM テーブルA WHERE ([5回目] Is Not Null)
>) AS UQ
>GROUP BY id
>
>こんな感じでしょうか。
>
>
>データの保持方法を見直した方が良いかもしれませんね^^;;

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

早速のご回答ありがとうございます。
クエリー試させていただきました。

分りにくくてすみません。回数目のMAX値が抽出されましたが、
最終回数目にある数値そのままが欲しいのです。

テーブルA

id  1回目 2回目 3回目 4回目 5回目
a001  1   2   1   5   3
a002  1   1       4
a003     3   4      2
a004  2       3   1  
a005         7
:
:

以上のように、idが存在する間に、最高回数目のフィールドにある
数値だけが欲しいのです。回数目には(null)も存在します。

欲しいデータ

id  結果
a001  3
a002  4
a003  2
a004  1
a005  7


という具合です。

何度もすみません。

【11670】Re:データの有無で判定 再度すみません
発言  超初心者  - 10/6/1(火) 15:08 -

引用なし
パスワード
   ▼Mr.Child さん:

半ば強引に(!?)クエリーにまとめて見ました^^;;


SELECT UQ_2.id, data AS 結果, UQ_2.回数
FROM (
SELECT 顧客id AS id, [1回目] AS data, "1回目" AS 回数
FROM テーブルA WHERE ([1回目] Is Not Null)
union
SELECT 顧客id AS id, [2回目] AS data, "2回目" AS 回数
FROM テーブルA WHERE ([2回目] Is Not Null)
union
SELECT 顧客id AS id, [3回目] AS data, "3回目" AS 回数
FROM テーブルA WHERE ([3回目] Is Not Null)
union
SELECT 顧客id AS id, [4回目] AS data, "4回目" AS 回数
FROM テーブルA WHERE ([4回目] Is Not Null)
union
SELECT 顧客id AS id, [5回目] AS data, "5回目" AS 回数
FROM テーブルA WHERE ([5回目] Is Not Null)
) AS UQ_2
INNER JOIN (
SELECT id, MAX(回数) AS 回
FROM (
SELECT 顧客id AS id, [1回目] AS data, "1回目" AS 回数
FROM テーブルA WHERE ([1回目] Is Not Null)
union
SELECT 顧客id AS id, [2回目] AS data, "2回目" AS 回数
FROM テーブルA WHERE ([2回目] Is Not Null)
union
SELECT 顧客id AS id, [3回目] AS data, "3回目" AS 回数
FROM テーブルA WHERE ([3回目] Is Not Null)
union
SELECT 顧客id AS id, [4回目] AS data, "4回目" AS 回数
FROM テーブルA WHERE ([4回目] Is Not Null)
UNION
SELECT 顧客id AS id, [5回目] AS data, "5回目" AS 回数
FROM テーブルA WHERE ([5回目] Is Not Null)
) AS UQ
GROUP BY id
) AS SQ ON
UQ_2.id=SQ.id And UQ_2.回数=SQ.回


見づらくなってすみません^^;

UQ、UQ_2、SQ をそれぞれ別クエリにすると
少しは見やすくなるかも!?

【11671】Re:データの有無で判定 再度すみません
お礼  Mr.Child  - 10/6/1(火) 15:14 -

引用なし
パスワード
   ▼超初心者 さん:
>▼Mr.Child さん:
>
>半ば強引に(!?)クエリーにまとめて見ました^^;;
>
>
>SELECT UQ_2.id, data AS 結果, UQ_2.回数
>FROM (
>SELECT 顧客id AS id, [1回目] AS data, "1回目" AS 回数
>FROM テーブルA WHERE ([1回目] Is Not Null)
>union
>SELECT 顧客id AS id, [2回目] AS data, "2回目" AS 回数
>FROM テーブルA WHERE ([2回目] Is Not Null)
>union
>SELECT 顧客id AS id, [3回目] AS data, "3回目" AS 回数
>FROM テーブルA WHERE ([3回目] Is Not Null)
>union
>SELECT 顧客id AS id, [4回目] AS data, "4回目" AS 回数
>FROM テーブルA WHERE ([4回目] Is Not Null)
>union
>SELECT 顧客id AS id, [5回目] AS data, "5回目" AS 回数
>FROM テーブルA WHERE ([5回目] Is Not Null)
>) AS UQ_2
>INNER JOIN (
>SELECT id, MAX(回数) AS 回
>FROM (
>SELECT 顧客id AS id, [1回目] AS data, "1回目" AS 回数
>FROM テーブルA WHERE ([1回目] Is Not Null)
>union
>SELECT 顧客id AS id, [2回目] AS data, "2回目" AS 回数
>FROM テーブルA WHERE ([2回目] Is Not Null)
>union
>SELECT 顧客id AS id, [3回目] AS data, "3回目" AS 回数
>FROM テーブルA WHERE ([3回目] Is Not Null)
>union
>SELECT 顧客id AS id, [4回目] AS data, "4回目" AS 回数
>FROM テーブルA WHERE ([4回目] Is Not Null)
>UNION
>SELECT 顧客id AS id, [5回目] AS data, "5回目" AS 回数
>FROM テーブルA WHERE ([5回目] Is Not Null)
>) AS UQ
>GROUP BY id
>) AS SQ ON
>UQ_2.id=SQ.id And UQ_2.回数=SQ.回
>
>
>見づらくなってすみません^^;
>
>UQ、UQ_2、SQ をそれぞれ別クエリにすると
>少しは見やすくなるかも!?

超初心者 さんって、初心者さんでは失礼です、、、、

出来ました!

有難うございました。

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