Page 22 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ユニオンクエリーとグループ化 宮本 02/9/10(火) 11:01 ┗Re:ユニオンクエリーとグループ化 こうちゃん 02/9/10(火) 12:26 ┗Re:ユニオンクエリーとグループ化 宮本 02/9/10(火) 16:37 ┗Re:ユニオンクエリーとグループ化 こうちゃん 02/9/10(火) 20:53 ┗Re:ユニオンクエリーとグループ化 宮本 02/9/11(水) 10:37 ┗確認しました。ごめんなさい。 こうちゃん 02/9/11(水) 10:53 ┗Re:確認しました。ごめんなさい。 宮本 02/9/11(水) 11:43 ─────────────────────────────────────── ■題名 : ユニオンクエリーとグループ化 ■名前 : 宮本 ■日付 : 02/9/10(火) 11:01 -------------------------------------------------------------------------
お世話になります。(AC2000 WIN98) 旬ごとの合計を出すのに次のようなSQLユニオン句を作りましたがグループ化が できません。入庫NOは重複があります。ご教授お願いします。 SELECT "01-10" as 旬, count([入庫No]) as 旬入庫数 FROM TN where (((TN.入庫日) between #2002/09/01# and #2002/09/10#)) UNION SELECT "11-20", count([入庫No]) FROM TN where (((TN.入庫日) between #2002/09/11# and #2002/09/20#)) UNION SELECT "21-31", count([入庫No]) FROM TN where (((TN.入庫日) between #2002/09/21# and #2002/09/30#)) GROUP BY TN.入庫No; |
宮本 さん、こんにちは >旬ごとの合計を出すのに次のようなSQLユニオン句を作りましたがグループ化が >できません。入庫NOは重複があります。ご教授お願いします。 > >SELECT "01-10" as 旬, count([入庫No]) as 旬入庫数 >FROM TN where (((TN.入庫日) between #2002/09/01# and #2002/09/10#)) >UNION SELECT "11-20", count([入庫No]) FROM TN where (((TN.入庫日) between #2002/09/11# and #2002/09/20#)) >UNION SELECT "21-31", count([入庫No]) FROM TN where (((TN.入庫日) between #2002/09/21# and #2002/09/30#)) >GROUP BY TN.入庫No; これでGROUP BY TN.入庫Noを外してデータはとれていますか? UNIONで区分して集計する場合は、1つのSELECT文に該当しない区分のダミー列が必要です。 例えばこんな感じ・・ #TNテーブルの入庫日を旬ごとに区分して、入庫Noの数を集計する #サブクエリでUNIONを使います #サブクエリの 0 as [10-20] のように該当する区分以外のフィールドを「値 0」をリテラルに設定して作ります。 #そのあとサブクエリの各旬の合計をSELECTします ってこれで回答になっていますか? SELECT sum(t.[01-10]) as 上旬, sum(t.[10-20]) as 中旬, sum(t.[20-30]) as 下旬 from( SELECT count([入庫No]) as [01-10], 0 as [10-20], 0 as [20-30] FROM TN where (TN.入庫日 between #2002/09/01# and #2002/09/10#) UNION ALL SELECT 0 as [01-10], count([入庫No]) as [10-20], 0 as [20-30] FROM TN where (TN.入庫日 between #2002/09/11# and #2002/09/20#) UNION ALL SELECT 0 as [01-10], 0 as [10-20], count([入庫No]) as [20-30] FROM TN where (TN.入庫日 between #2002/09/21# and #2002/09/30#) ) as t |
こうちゃんさん、こんにちは いつも有難うございます。 ごめんなさい。旬の合計ではなくて件数だけが必要です。 >これでGROUP BY TN.入庫Noを外してデータはとれていますか? データはとれています 旬 入庫件数 −−−−−−−−−−−−−− 01−10 84 11−20 122 21−31 340 ご回答いただいたSQLで実行すると同じ結果になります。 上旬 中旬 下旬 −−−−−−−−−−−−−−−− 84 122 340 さらなるご指導お願いいたします。 |
宮本 さん、ごめんなさい、勘違いしていました。 >ごめんなさい。旬の合計ではなくて件数だけが必要です。 入庫Noの種類が旬ごとにいくつあるかということですか? > 旬 入庫件数 > −−−−−−−−−−−−−− > 01−10 84 > 11−20 122 > 21−31 340 これを > > 上旬 中旬 下旬 > −−−−−−−−−−−−−−−− > 84 122 340 > こんな感じで横に並べたいのかと思いました(^^;) もし各順の入庫Noが1種類ならレコードがいくつあってもこんな感じになるってことでいいですか? 旬 入庫件数 −−−−−−−−−−−−−− 01−10 1 11−20 1 21−31 1 で、こんな感じでどうでしょう? もとの旬毎のデータをDISTINCTで入庫Noごとにリストを作っておいて、旬ごとのリストのUNIONをサブクエリーとして、旬で件数カウントしました。 もうちょっと効率のいいSQLがありそうですが・・ SELECT T.旬, Count(T.旬入庫数) AS 旬入庫数のカウント FROM (SELECT DISTINCT '01-10' as 旬, 入庫No as 旬入庫数 FROM TN where TN.入庫日 between #2002/09/01# and #2002/09/10# UNION SELECT DISTINCT '11-20' as 旬, 入庫No as 旬入庫数 FROM TN where TN.入庫日 between #2002/09/11# and #2002/09/20# UNION SELECT DISTINCT '21-30' as 旬, 入庫No as 旬入庫数 FROM TN where TN.入庫日 between #2002/09/21# and #2002/09/30# ) AS T GROUP BY T.旬; |
こうちゃんさん、ご教授有難うございます。 説明不足ですみません。 旬 入庫件数 −−−−−−−−−−−−−− 01−10 1 11−20 1 21−31 1 以上ご推測のとおりです。が 教えていただいたSQLで実行すると、「クエリ式 ’01−10’の構文エラー・・・ となります。どこか間違っているのでしょうか?ご指摘お願いします。 |
宮本 さん、こんにちは >こうちゃんさん、ご教授有難うございます。 >説明不足ですみません。 > > 旬 入庫件数 > −−−−−−−−−−−−−− > 01−10 1 > 11−20 1 > 21−31 1 > >以上ご推測のとおりです。が >教えていただいたSQLで実行すると、「クエリ式 ’01−10’の構文エラー・・・ >となります。どこか間違っているのでしょうか?ご指摘お願いします。 DISTINCT と '01-10' の間の空白が全角になっていませんか? AccessのクエリのSQLビューで確認したSQL文をエディタを介してコピペしたのですが、そのうちいずれかでスペースが全角に変えられちゃったようです。 再度、下記をクエリのSQLビューにコピペしてみてください。 エラーが続くようでしたら、スペースを確認してみてください。 (今回はSQLビューから直接コピペしてみました) SELECT T.旬, Count(T.旬入庫数) AS 入庫数 FROM (SELECT DISTINCT '01-10' as 旬, 入庫No as 旬入庫数 FROM TN where TN.入庫日 between #2002/09/01# and #2002/09/10# UNION SELECT DISTINCT '11-20' as 旬, 入庫No as 旬入庫数 FROM TN where TN.入庫日 between #2002/09/11# and #2002/09/20# UNION SELECT DISTINCT '21-30' as 旬, 入庫No as 旬入庫数 FROM TN where TN.入庫日 between #2002/09/21# and #2002/09/30# ) AS T GROUP BY T.旬; |
こうちゃんさん、出来ました。感謝いたします。 こんな事も気がつかないで恥ずかしい限りですが、よろしくお願いいたします。 有難うございました。 |