Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルクロス集計について
記事No42783
投稿日: 2017/05/26(Fri) 08:56
投稿者あおもり
解決済: ON
OS:Windows 7
Access Version:2010

早速ではありますが、よろしくお願い致します。

 薬品名    開始日      日数    1日量
ロキソニA  2017/05/01   7   3錠
イフ     2017/06/01      3    1錠
バファリA  2017/04/01   16   2錠

といったテーブルがあり、このテーブルをクロス集計で

行見出し:薬品名
列見出し:開始日
値:1日量

      5/1  5/2  5/3  5/4  5/5  5/6  5/7 *****  6/1  6/2  6/3 **** 7/1  7/2 ***
ロキソニA   3    3    3    3    3    3    3
イフ                                                 1    1    1
バファリA                                                                2    2 ****

といったように開始日から薬の日数分の日付に1日量が入るように
クロス集計クエリを作成したいのですが可能でしょうか。
よろしくお願い致します。

タイトルRe: クロス集計について
記事No42784
投稿日: 2017/05/26(Fri) 12:10
投稿者tkwan
解決済: ON
薬の量が一定なら

             投薬日           日数  一日量  
ロキソニA  2017/05/01〜2017/05/07   7   3錠
イフ     2017/06/01〜2017/06/03      3    1錠
バファリA  2017/07/01〜2017/07/16   16   2錠

のほうが良いのではないかと思いますよ。

SELECT 開始日 & "〜" & DateAdd("d",日数-1,開始日) AS 投薬日,
       日数,
       一日量
  FROM テーブル名;

タイトルRe^2: クロス集計について
記事No42785
投稿日: 2017/05/26(Fri) 14:42
投稿者あおもり
解決済: ON
早速のご返信ありがとうございます。

列の日付ですが、何日〜何日ではなく1日ごとにしたいと考えております。
わかりにくくて申し訳ございません。

最初のテーブルをすこしかえると

 薬品名    開始日      日数    1日量
ロキソニA  2017/05/01   7   3錠
イフ     2017/05/05      3    1錠
バファリA  2017/05/06   4    2錠

であった場合、

行見出し:薬品名
列見出し:開始日
値:1日量

      5/1  5/2  5/3  5/4  5/5  5/6  5/7  5/8  5/9  5/10  5/11
ロキソニA   3    3    3    3    3    3    3
イフ                            1    1    1
バファリA                             2    2    2    2

といった感じにしたいです。可能でしょうか。

タイトルRe^3: クロス集計について
記事No42786
投稿日: 2017/05/26(Fri) 15:54
投稿者tkwan
解決済: ON
> 列の日付ですが、何日〜何日ではなく1日ごとにしたいと考えております。
それは分かっています。

それでは、とりあえず今日以降で開始日から2週間分の表示(日数が2週間以上ある場合)
をするということで説明します。

1.テーブルを作ります。(テーブル名:T1)
 フィールド名:日付
   データ型:数値
   データ :1〜14の数字

2.クエリを作ります。(Q1)

 SELECT 薬品名, 
        開始日, 
        [開始日]+[日付]-1 AS 投薬日, 
        日数, 
        1日量
   FROM T1, 
        テーブル名
  WHERE ([開始日]+[日付]-1) Between Date() And [開始日]+[日数]-1;

※[テーブル名]はそちらのテーブルの名前に置き換えのこと。


3.Q1をクロス集計します。
  
 TRANSFORM First(1日量) AS F
    SELECT 薬品名,
           1日量
      FROM Q1
  GROUP BY 薬品名,
           1日量
     PIVOT 投薬日;

タイトルRe^4: クロス集計について
記事No42787
投稿日: 2017/05/26(Fri) 16:10
投稿者tkwan
解決済: ON
今日以前のものも表示したいのであれば

>   WHERE ([開始日]+[日付]-1) Between Date() And [開始日]+[日数]-1;
      ↓
    WHERE [開始日]+[日付]-1<=[開始日]+[日数]-1

に変更。

タイトルRe^5: クロス集計について
記事No42788
投稿日: 2017/05/26(Fri) 18:02
投稿者あおもり
解決済: ON
再度迅速なご対応ありがとうございます。

本日作業できない時刻となりましたので、明日作業したいと思います。

また明日ご連絡致します。本日は誠にありがとうございました。

タイトルRe^5: クロス集計について
記事No42789
投稿日: 2017/05/27(Sat) 21:47
投稿者あおもり
解決済: ON
本日作業しましたらできました。
この度は誠にありがとうございました。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る