このディレクトリの索引

# 出典 :: SQL質疑応答スレ 11問目 #300 # 上手くいかないので質問させてください。 # ACCESS2007を使っています。 # 年フィールドと月フィールドを用いて「年度」の件数を抽出したいのですが、 # 以下のクエリでは月部分が干渉してか上手く抽出出来ません。 # # 22年4月〜23年3月 といった結果を出したいのですがどうしたらよいでしょうか? # # SELECT 年 FROM Table1 # WHERE (年>21 AND 月>3) AND (年<23 AND 月<4) # # 述語構造('Table1',1,年). 述語構造('Table1',2,月). 述語構造('Table1',3,データ1). 述語構造('Table1',4,データ2). '年フィールドと月フィールドを用いて「年度」の件数を抽出したい'(_年度,_件数) :- 件数を抽出したい('年フィールドと月フィールドを用いて「年度」の'(_年度),_件数). '年フィールドと月フィールドを用いて「年度」の'(_年度) :- 'Table1から年、月を得る'(_年,_月), '年度は1-3月は前年の年度4-12月は当年の年度となる。'(_年,_月,_年度). 'Table1から年、月を得る'(_年,_月) :- '年、月の引数位置を得る'(_引数ならび,_年の引数位置,_月の引数位置), 'Table1から年、月を得る'(_引数ならび,_年の引数位置,_月の引数位置,_年,_月). '年、月の引数位置を得る'(_引数ならび,_年の引数位置,_月の引数位置) :- findall(_項目,述語構造('Table1',_,_項目),_引数ならび), 述語構造('Table1',_年の引数位置,年), 述語構造('Table1',_月の引数位置,月), 'Table1から年、月を得る'(_引数ならび,_年の引数位置,_月の引数位置,_年,_月) :- 'Table1から'(_引数ならび), '年、月を得る'(_引数ならび,_年の引数位置,_月の引数位置,_年,_月). 'Table1から'(_引数ならび) :- P =.. ['Table1'|_引数ならび], call(P). '年、月を得る'(_引数ならび,_年の引数位置,_月の引数位置,_年,_月) :- nth1(_年の引数位置,_引数ならび,_年), nth1(_月の引数位置,_引数ならび,_月). '年度は1-3月は前年の年度4-12月は当年の年度となる。'(_年,_月,_年度) :- '1-3月は前年の年度'(_年,_月,_年度). '年度は1-3月は前年の年度4-12月は当年の年度となる。'(_年,_月,_年度) :- '4-12月は当年の年度となる。'(_年,_月,_年度). '1-3月は前年の年度'(_年,_月,_年度) :- between(1,3,_月), succ(_年度,_年). '4-12月は当年の年度となる。'(_年,_月,_年度) :- between(4,12,_月), _年度 = _年. 件数を抽出したい(_目標,_件数) :- findall(1,_目標,_件数を意味する1のならび), length(_件数を意味する1のならび,_件数).