痔になりやすい生活習慣とは?

締め日が21~翌20日なのですが、ある実績表を月度毎で集計したい場合みなさんならどういうクエリにしますか?

できたらクロス集計で、横軸が○/21~翌/20でならぶようにしたいです。

1~月末なら、月毎に集計させればいいのですが。

よいお知恵をおかしください。
Excelでもいいです。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

#1だけど、Where条件の話ね。



列見出しはDayで囲うが、1~31で並んだら、
ドラッグ&ドロップで入れ替えて
    • good
    • 0

「日付」の列がDate型(シリアル値)なら、-20してMonthで囲う?

この回答への補足

あ、なるほど
式1: Year([日付]-20) & Format(Month([日付]-20),"00")
これでできました。

補足日時:2015/01/22 23:57
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qaccessクロス集計で前月21日~今月20日集計は

説明がうまくできないかもしれません。
やりたいことは、accessクロス集計で、月別の集計部分はウイザードで作成されるのは1日~末日ですが、これを、前月21日~今月20日のような「締め日」ライクに変更して集計することはできるものでしょうか。

《集計結果イメージ》
氏名,1月,2月,3月
山田,150,160,155
田中,150,160,165
佐藤,130,160,165

#1月は12月21日~1月20日分を集計するように下記を修正したい。
TRANSFORM Sum([売上]) AS 値
SELECT [氏名], Sum([売上]) AS [集計値: 売上]
FROM 弁当注文
GROUP BY [氏名]
PIVOT Format([年月日],"oooo") IN ("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");

Aベストアンサー

Accessは使わないので自信薄ですが、
[年月日]-20日+1月、でまとめればいいので、
PIVOT Format(DateAdd("m",1,DateAdd("d",-20,[年月日])),"oooo") IN ("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");
とかにすればいいんじゃないでしょうか?

QAccessでテーブルの値をテキストボックスに代入するには?

[ID][文字列]の2つのフィールドからなる単純なテーブルがあり、削除クエリを併用して常に最新のデータしか格納されていない状態に工夫できました。(データは常に1つ)
そこでフォーム上にあるテキストボックスにこのテーブルの[文字列]フィールドのデータを表示させたいのですが、
どうしたらよいでしょうか?

また、このテーブルの[文字列]フィールドのデータを直接変数として使いたい場合はVBAでどのように記述すればよいのでしょうか?

Aベストアンサー

テーブルに"データは常に1つ"ならコントロールソースに
「=DLOOKUP("文字列のフィールド名","テーブル名")」
IDごとに"データは常に1つ"ならコントロールソースに
「=DLOOKUP("文字列のフィールド名","テーブル名","[ID]='" & Me.ID & "'")」

Dlookup関数のヘルプ
http://office.microsoft.com/ja-jp/assistance/HP010496551041.aspx

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

Qアクセスで可能でしょうか?初心者です。

売上先で、(1)末締め翌末入金 (2)末締め翌月20入金 (3)末締め25入金 (4)20締め翌月末入金 の売上先が4パターンあるとして、
テーブル(T得意先情報)売上ID 売上先名 請求締め日 
テーブル(T請求書)請求ID 売上先名 売上ID 請求年月     日 請求金額
テーブル(T入金)請求ID 請求金額 入金額 入金予定日  と考えとりあえずテーブルを作成しました

 (1)入金日まで30or31 (2)20 (3)25 (4)40or41or42
売上先請求日付(1)~(4) (1)~(3)の請求日が1/31(4)が1/20とした場合テーブル(T入金)で、
2月の(28)月末の入金額、 20の入金額、25の入金額、
3月10の入金額 の入金年月日の件数と金額を求めたいのですが、うまくいきません。

クエーりーで入金ベースのサイト(末,20,25,40)を作れば何とかなるのかな?んんどうやったらよいの・・・
リーレーションがとても難しいと考え込んでしまい先に進みません。
構築方法+具体的な日付ごとの合計金額初心者の私に
理解できるようどなたか教えてくださいますよう
お願いいたします。 ちなみに私経理の仕事しかしたことがないので、質問の内容がアクセス経験者の方々に伝わるよう
な質問かどうか少々不安ですが、よろしくお願いします。

売上先で、(1)末締め翌末入金 (2)末締め翌月20入金 (3)末締め25入金 (4)20締め翌月末入金 の売上先が4パターンあるとして、
テーブル(T得意先情報)売上ID 売上先名 請求締め日 
テーブル(T請求書)請求ID 売上先名 売上ID 請求年月     日 請求金額
テーブル(T入金)請求ID 請求金額 入金額 入金予定日  と考えとりあえずテーブルを作成しました

 (1)入金日まで30or31 (2)20 (3)25 (4)40or41or42
売上先請求日付(1)~(4) (1)~(3)の請求日が1/31(4)が1/20とした場合テーブル...続きを読む

Aベストアンサー

補足ありがとうございました。
クエリで創った方が簡単だと思いますので。
取り合えず以前私が構築した概要を当てはめて説明します。
抽出用にフォームを1つ創るとして抽出フォームとし抽出範囲1と抽出範囲2の
テキストボックスを配置します。
T得意先情報に売上ID・売上先名・請求締め日と入金日があると仮定します。
T請求書の全てのフィールドとT得意先情報の請求締め日・入金日を使いクエリを創ります。
T請求書の売上IDとT得意先情報の売上IDをリレーションさせてT請求書の請求ID・
売上先名・売上ID・請求年月日・請求金額 ・請求締め日・入金日のクエリにします。(抽出クエリ1とします)
抽出クエリ1の請求年月日の抽出条件に
Between Form![抽出フォーム]![抽出範囲1] And Form![抽出フォーム]![抽出範囲2]
と設定して請求締め日の抽出条件に末締めを設定します。
抽出フォームの抽出範囲1に2003/02/01範囲2に2003/02/29と入力しその値を抽出
クエリで参照しクエリを開くと1ヶ月間の末締め請求レコードが抽出されます。
同様に抽出クエリ2を創り請求年月日の抽出条件に
Between DateAdd("m",-1,DateAdd("d",20,[Form]![抽出フォーム]![抽出範囲1])) And Form!DateAdd("d",19,[抽出フォーム]![抽出範囲1])
請求締め日の抽出条件に20日締めを設定します
この抽出条件で2003/01/21から2003/02/20間の請求レコードが抽出できます。
抽出クエリ1と2を使って同一テーブルにレコードを追加するようにすれば(1)~
(3)までの締め日と20日締めのテーブルが出来ます。そのテーブルの入金日のフィールド
から末入金・20日入金・25日入金・10日入金のレコードを集計すれば各入金
件数と入金額が算出できます。

こんな感じではないでしょうか。この場合、締め日・入金日はT得意先情報から持っ
て来るので入金予定日は入力する必要がありません。

もしくはT請求書にレコードを入力する際のフォーム自体にT得意先情報から締め日
・入金日を参照してT請求書のフィールドに直に保存しT請求書から締め日を抽出し
て入金日毎に集計するかではないでしょうか。この場合フォームのイベントに記述
していく必要があります。
Accessに慣れてきたらこちらの方法をとってみてはいかがでしょうか。

補足ありがとうございました。
クエリで創った方が簡単だと思いますので。
取り合えず以前私が構築した概要を当てはめて説明します。
抽出用にフォームを1つ創るとして抽出フォームとし抽出範囲1と抽出範囲2の
テキストボックスを配置します。
T得意先情報に売上ID・売上先名・請求締め日と入金日があると仮定します。
T請求書の全てのフィールドとT得意先情報の請求締め日・入金日を使いクエリを創ります。
T請求書の売上IDとT得意先情報の売上IDをリレーションさせてT請求書の請求ID・
売上先名・売...続きを読む

Q3つの表の外部結合

表A、B、Cの3つがあり、Aのすべての行を出力したいと考えています。
外部結合を用いるのだとは思うのですが、3つの表に対して行う場合の
書き方がわからず困っています。
ご教授いただけないでしょうか?
select * from a,b,c
where a.商品ID =b.商品ID (+) and b.商品ID (+) =c.商品ID (+)
としてみましたが、うまくいきませんでした。

Aベストアンサー

ansi構文の趣旨からいえば、結合条件と絞り込み条件は分けて書くので・・

select *
from a
left join b on (a.商品ID =b.商品ID)
left join c on (b.商品ID =c.商品ID)
where a.年月 = 任意の値

と書くのが一般的でしょうね。

QACCESS フォームで入力した日付をクエリで読み

ACCESS フォームで入力した日付をクエリで読み替えたい

ACCESS フォームで入力した日付をクエリで使用しているテーブルの書式に変換したい

フォーム テキスト名:日付にyyyymmdd で入力します

クエリ テキスト名:日付はパラメータとして使用しています
クエリ内で使用しているテーブルの日付書式は 日付:yyyy/mm/ddです

パラメータは 「日付始」と「日付終」の2箇所のテキストに入力されたデータを使用しています。以下がパラメータです。

Between [Forms]![フォーム]![日付始] and [Forms]![フォーム]![日付終]

フォームのテキストボックスにyyyymmddと入力してもクエリでエラーが出ることない パラメータを日付に設定したいのですがどうしたらよいでしょうか?

ちなみに、以下の式を入れたらエラーです。

Between CDate(Format([Forms]![フォーム]![日付始],"yyyy/mm/dd")) and CDate(Format([Forms]![フォーム]![日付始],"yyyy/mm/dd")) と入力しましたところ、、、、「式が複雑すぎるか、、、」のエラーメッセージが出てしまいました。
どなたか助けてください。お願い致します。

ACCESS フォームで入力した日付をクエリで読み替えたい

ACCESS フォームで入力した日付をクエリで使用しているテーブルの書式に変換したい

フォーム テキスト名:日付にyyyymmdd で入力します

クエリ テキスト名:日付はパラメータとして使用しています
クエリ内で使用しているテーブルの日付書式は 日付:yyyy/mm/ddです

パラメータは 「日付始」と「日付終」の2箇所のテキストに入力されたデータを使用しています。以下がパラメータです。

Between [Forms]![フォーム]![日付始] and [...続きを読む

Aベストアンサー

> Between [Forms]![フォーム]![日付始] and [Forms]![フォーム]![日付終]
これで合ってると思います。

> クエリ内で使用しているテーブルの日付書式は 日付:yyyy/mm/ddです
フォームの値が正しく日付として認識できてますか?
YYYYMMDDのつもりで8桁の入力なら、ダメですよ。
YYYYMMDDのつもりの8桁の入力なら、betweenを設定する日付の列をformat文で
yyyymmddに編集してテキスト同士として比較するとか。

Q型 varchar から型 numeric への変換エラー。

SQLクエリアナライザを使って、あるデータベースからLEFT JOINなどを駆使し、条件にそってデータを抽出しようと必死でやっております。
今まではうまく取得できていたのに、”型 varchar から型 numeric への変換エラー。”というエラーがでるようになりました。
前回とテーブルのデータを比較してみると、IsNULL(chrShokuhinCD,'') as chrShokuhinCDで引っ掛かっているようです。
この項目には空白(スペース)が入ったデータが最近存在しているのが原因だと思うのですが。。。
空白だったとき、IsNULL(chrShokuhinCD,'') as chrShokuhinCDはどのように修正すればよいでしょうか?教えてください。

Aベストアンサー

>空白だったとき、IsNULL(chrShokuhinCD,'') as chrShokuhinCDはどのように修正すればよいでしょうか?

では質問です。
空白だったとき、どんな数値として扱えばいいでしょうか?

これで何を入れればいいかわかると思いますが。

QUnionの結果全体をOrder By したい。

いつもお世話になっています。
下記のSQLの結果をWEEK_KB,TIME_KB,SPAN_CDでソートするには
どのようにしたら良いのでしょうか?

色々考えたのですが、どうしてもわかりませんでした。
よろしくお願いいたします。

SQLServerのバージョンは2000だったと思います。。。。



SELECT
'2',
A.WEEK_KB,
A.TIME_KB,
A.SPAN_CD,
A.JUGYO_CD,
B.JUGYO_MEI,
ADD_FLG , UPD_FLG , DEL_FLG
FROM table1_wk As A
INNER JOIN 授業マスタ As B
ON A.JUGYO_CD = B.JUGYO_CD
WHERE
ID='aaa'
UNION
SELECT
'1',
C.WEEK_KB,
C.TIME_KB,
C.SPAN_CD,
C.JUGYO_CD,
D.JUGYO_MEI,
'0','0','0'
FROM table1 As C
INNER JOIN 授業マスタ AS D
ON C.JUGYO_CD = D.JUGYO_CD
WHERE
C.JUGYO_CD
NOT IN
( SELECT JUGYO_CD
FROM table1_wk
WHERE
ID='aaa' )

いつもお世話になっています。
下記のSQLの結果をWEEK_KB,TIME_KB,SPAN_CDでソートするには
どのようにしたら良いのでしょうか?

色々考えたのですが、どうしてもわかりませんでした。
よろしくお願いいたします。

SQLServerのバージョンは2000だったと思います。。。。



SELECT
'2',
A.WEEK_KB,
A.TIME_KB,
A.SPAN_CD,
A.JUGYO_CD,
B.JUGYO_MEI,
ADD_FLG , UPD_FLG , DEL_FLG
FROM table1_wk As A
INNER JOIN 授業マスタ As B
ON A.JUGYO_CD = B.JUGYO_CD
WHERE
ID='aaa'
U...続きを読む

Aベストアンサー

このまま末尾に

Order by 2,3,4

ではダメでした?
2番目から4番目までの列でSORTする、と言うANSI共通の構文です。

ダメだったら、インラインビューで括ってしまう、というのは?

select inview.* from
(
ここに上記のSQLを書く
) inview
order by 2,3,4

Qアクセスのレポートのヘッダーを2ページ以降にもつけるには?

アクセスでスタッフの交通費の集計をしレポートに出力しています。1ページ目に所属部署、行き先などヘッダーがあります。2ページ目にも同様のヘッダーを入れたいのですが、どうすればいいのでしょうか?初歩的な質問ですいませんが、困っています。

Aベストアンサー

レポートヘッダーにヘッダーを設定しているとレポートの最初だけ表示されます。
所属部署・行き先等のヘッダーをページヘッダーに移動してレポートヘッダの高さを0にしてください。(レポートヘッダー部に表示するラベル等があればそれに合わせて高さを設定してください。)
そうすれば各ページにヘッダーが表示されます。
ページヘッダーにある各ヘッダーを移動後レポートヘッダー・フッターに何も表示するものがなければレポートヘッダー・フッターを削除してもかまいません。

QAccessで支払日を出したい

アクセス初心者ですがいきなり顧客管理と業務管理を
やれとの社命で・・・

顧客テーブルで「末締め」の翌月20日払いや「20締め」の45日後払いだとかを記入して

業務クエリで「作業日」から「支払い日」を表示できる
ようにしたいのですが・・・

意味分かりますか?すみません「子供に」おしえるくらいの気持ちで教えていただけますでしょうか?
お願いします

Aベストアンサー

>業務クエリで「作業日」から「支払い日」を表示できるようにしたい・・・
>「末締め」の翌月20日払いや「20締め」の45日後払い
これなら顧客テーブルと業務テーブル?(取引先・作業日・金額など)からクエリを使い表示することが出来ます。
テーブルに必要なフィールドがあれば良いのですがなければフィールドを追加して作らなくてはいけません。
顧客テーブルに締日・翌月定時払いや締め後45日後払いの判断をする支払区分・支払期日・据置日のフィールドが必要です。
例えば 締日は締日の日にち・支払区分は1:定時 2:後払い・支払期日は定時払いの支払い日・据置日は定時払い:月数(翌月なら1・翌々月なら2)後払い:45などの据置日数を保存する。
例えば末締め・翌月20日払いの場合
締日  支払区分  支払期日 据置日
31    1     20    1
支払日: DateSerial(Year(Date(),Month(Date())+[据置日],[支払期日])
で支払う日を求められます。上記はDate()を使って今日の日付を求めてそれを元に支払日を出すようにしていますが指定の日付をDate()の部分に代入する記述に変えることが出来るので作る内容によって変わります。基準となる日付(2005/12月分を出したいとか)をフォームから入力することもできます。

例えば20日締め・45日後払いの場合
締日  支払区分  支払期日 据置日
20    2          45
支払日: DateAdd("d",[据置日],DateSerial(Year(Date(),Month(Date()),[締日]))
で支払う日を求められます。上記も今日(Date())を基準にしてありますが定時払いと以下同様です。

定時払いと後払いの支払う日を一度に表示したい場合は支払区分を使って上記の記述を使い表示できます。
支払日: IIf([支払区分]=1,DateSerial(Year(Date(),Month(Date())+[据置日],[支払期日]),DateAdd("d",[据置日],DateSerial(Year(Date(),Month(Date()),[締日]))
)
これで一度に支払日を求められます。(これも基準は今日の日付になっていますが他と同様に基準日の取得の仕方は色々ありますのでどのように取るかによって変わってきます)
この様にすれば締日の日付をテーブルに保存するような必要はありません。
データベースのテーブルを構築する時は通常は可変するデータはあまりテーブル自体に持たない(保存しない)ようにします。
後は作業テーブルの締日間のレコードを集計して支払う合計額を算出するクエリを作ってクエリ内で顧客テーブルを追加するか作業テーブルの集計するクエリを作りそのクエリを元にクエリを作り顧客テーブルを追加して顧客コード等の顧客を識別できるキーでリレーションし表示に必要なフィールドを選択し新しいフィールドに支払日として前記の支払日を求める記述を入れれば出来ます。
そのクエリでテーブルを作れば支払先と支払日・金額のレコードでなる支払テーブルが出来上がります。

大体こんな感じだと思いますが。

>業務クエリで「作業日」から「支払い日」を表示できるようにしたい・・・
>「末締め」の翌月20日払いや「20締め」の45日後払い
これなら顧客テーブルと業務テーブル?(取引先・作業日・金額など)からクエリを使い表示することが出来ます。
テーブルに必要なフィールドがあれば良いのですがなければフィールドを追加して作らなくてはいけません。
顧客テーブルに締日・翌月定時払いや締め後45日後払いの判断をする支払区分・支払期日・据置日のフィールドが必要です。
例えば 締日は締日の日にち...続きを読む


このカテゴリの人気Q&Aランキング