日付と休日フラグの2つのフィールドを持つ
カレンダーテーブルを使用して
翌営業日までの日数を求めるSQLを教えていただけ
ますでしょうか。
使用環境はaccess2007です。

カレンダーテーブル
date flg
---- ---
4/1 0 → 3(翌営業日まで3日間)
4/2 1 → 2(翌営業日まで2日間)
4/3 1 → 1(翌営業日まで1日間)
4/4 0 → 1(翌営業日まで1日間)
4/5 0 → 1(翌営業日まで1日間)

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

A 回答 (1件)

こんな感じでどうでしょうか。



SELECT
date
, (SELECT MIN(date) FROM カレンダーテーブル AS T2 WHERE T1.DT < T2.DT AND T2.FLG = 0) - T1.date AS 日数
FROM
カレンダーテーブル AS T1;

ACCESSの環境がないので動作確認はできていません。
    • good
    • 0
この回答へのお礼

yamada_g様
素早いお返事ありがとうございます。
ばっちり、期待通りに動きました。

サブクエリ―は正解を示されると「そうだよなー」と
納得がいくのですが、いざ実戦になると、なかなか
自力では使いこなせません。。。
もっと勉強に励まないとですね!

本当に助かりました!ありがとうございました。

お礼日時:2011/04/18 19:07

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

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

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

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

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

Qure売れない役者と売れない手品氏がタッグを組んだらなにがおきそうですか

ure売れない役者と売れない手品氏がタッグを組んだらなにがおきそうですか|売れない役者と売れない手品師がタッグを組んだら何がおきそうですか|題名のとおりです|自由な発想でもhito一言回答でもOK|先入観を除くため回答例は出しません|ではおねがいします

Aベストアンサー

パンの耳生活になる

むしろ自分なら「あきらめて別な仕事に就く」ですね

QSQL 同テーブル、同フィールドの文字列連結

以下の様にSQLで実現したいと思っております。
なお、DBはOracle10Gを利用しております。

親と子テーブルがあり以下の構成となっております。
■親テーブル
 ID,カラムA
 1 ,AA
 2 ,BB
 3 ,CC

■子テーブル
 ID,枝番,カラムB
 1 ,1 ,あああ
 1 ,2 ,いいい
 2 ,1 ,ううう
 2 ,2 ,えええ
 2 ,3 ,おおお
 3 ,2 ,かかか

※IDカラムは親テーブルと子テーブルは1:1です
 子テーブルの枝番カラムはIDに対してN件です。

やりたい事としては、上記の2テーブルより、以下の結果を出力したいです。
 ID,カラムA,カラムB
 1 ,AA ,あああ いいい
 2 ,BB ,ううう えええ おおお
 3 ,CC ,かかか

親テーブルを元にして、
親テーブルに紐づく子テーブルのカラムBを連結して出力
するSQLをご教授いただけますでしょうか

Aベストアンサー

model句の出番ですな。

SELECT 親テーブル.ID, 親テーブル.カラムA, ConcatT.カラムB
FROM 親テーブル
LEFT OUTER JOIN
(
SELECT ID, SUBSTR(ConcatカラムB, 2) AS カラムB
FROM 子テーブル
MODEL RETURN UPDATED ROWS
PARTITION BY(ID)
DIMENSION BY(Row_Number() OVER(PARTITION BY ID ORDER BY 枝番))
MEASURES(カラムB, CAST(NULL AS VARCHAR2(2)) AS ConcatカラムB)
RULES ITERATE(100) UNTIL (PRESENTV(カラムB[ITERATION_NUMBER + 2], 1, 0) = 0)
(ConcatカラムB[0] = ConcatカラムB[0] || ' ' || カラムB[ITERATION_NUMBER + 1])
) ConcatT
ON 親テーブル.ID=ConcatT.ID
ORDER BY 親テーブル.ID;


枝番100件までの想定だけど、事前に件数数えて動的にループ数変えてもいいかも。

参考URL:http://www.geocities.jp/oraclesqlpuzzle/model-22.html

model句の出番ですな。

SELECT 親テーブル.ID, 親テーブル.カラムA, ConcatT.カラムB
FROM 親テーブル
LEFT OUTER JOIN
(
SELECT ID, SUBSTR(ConcatカラムB, 2) AS カラムB
FROM 子テーブル
MODEL RETURN UPDATED ROWS
PARTITION BY(ID)
DIMENSION BY(Row_Number() OVER(PARTITION BY ID ORDER BY 枝番))
MEASURES(カラムB, CAST(NULL AS VARCHAR2(2)) AS ConcatカラムB)
RULES ITERATE(100) UNTIL (PRESENTV(カラムB[ITERATION_NUMBER + 2], 1, 0) = 0)
(ConcatカラムB[0] = Concatカラ...続きを読む

Q燃費の悪い中古車が売れない?

燃費の悪い中古車が売れない?鉄スクラップになるような予感がします。というのは、会社の人やうちの親も燃費がそう悪くはない現行オデッセイや1つ前のステップワゴンを売りに出そうとしています。いずれも街乗り7km/l程度ですが、現行のオデは、ハイオク仕様らしく、レギュラをいれるとノックするそうです。
こういった高年式の車でも売りが激しくなり、Kカー、ハイブリッド需要が多くなりそうな気がします。そうなると、根本的に中古車市場の売れない層の車両がタダ同然か価値なしになるような気がしますがどうでしょうか?今日、GMが大型ハマーの権利売却とリストラが発表され、自動車メーカーにも原油高騰のしわ寄せがきました。自動車業界にも関係のある営業をしていますので、原油高騰によるしわ寄せ情報を推測したいため、質問します。中古車市場はどうなるのでしょうか?

Aベストアンサー

>根本的に中古車市場の売れない層の車両がタダ同然か価値なしに

そういう時代が来るかも知れません。
が、もう少し先の話ではないでしょうか。

原油高は今後も続くと思われるので、代替燃料が本格的に検討される
でしょうし、プラグインハイブリッド車や電気自動車等も少しづつ
普及していくとは思います。

しかし例えば、ガソリン価格が170円から250円になったとして。
一カ月にガソリンを50リッター使う人の場合で、一月あたりの負担増
は4000円になるわけですよね。

一年間で4万8000円は、確かに大きいです。
しかし、それを節約するために「燃費のよい自動車を新たに購入する」
というのは、ちょっと現実的ではないと思います。
今後10年乗ったとしても、48万円しか回収できないわけですから。

また現在、中古車として流通している自動車もピンからキリまであり、
いわゆる格安車などは、支払い総額の中で諸費用の割合が非常に高く、
ある意味では
 「いま現在の社会情勢であっても、モノによっては価値なしの車体が
  中古車として堂々と流通している」
 「もともと中古車市場はそうした側面を持っており、国民も納得して
  受け入れている」
とも言えるのではないでしょうか。

あくまで個人的な意見ですが。

>根本的に中古車市場の売れない層の車両がタダ同然か価値なしに

そういう時代が来るかも知れません。
が、もう少し先の話ではないでしょうか。

原油高は今後も続くと思われるので、代替燃料が本格的に検討される
でしょうし、プラグインハイブリッド車や電気自動車等も少しづつ
普及していくとは思います。

しかし例えば、ガソリン価格が170円から250円になったとして。
一カ月にガソリンを50リッター使う人の場合で、一月あたりの負担増
は4000円になるわけですよね。

一年間で4...続きを読む

QFileMaker Ver.7で2つの日付間から特定の曜日を除いた日数を求めたいのですが…

FileMaker Ver.7を使用して、質問のタイトルのように2つのフィールドは開始日と終了日を使用して特定の曜日を除いた日数を求めたいのですが皆様教えていただけませんか?

Aベストアンサー

>特定の曜日を除いた日数を求めたい
 特定の曜日は複数(土・日など)の場合もあるかも知れませんが、ここでは例えば日曜だけというように単数の場合に限定してお答えします。
 複数の場合があるときは、下記にならい、フィールドを複数設けて計算してください。
 次のとおり入力フィールド及び計算フィールドを作ります。
1、開始日(タイプ「日付」)……入力フィールドです。
2、終了日(タイプ「日付」)……入力フィールドです。
3、期間日数(タイプ「計算」計算結果「数字」)
  計算式………終了日-開始日+1
4、開始日の曜(タイプ「計算」計算結果「数字」)
  計算式………DayofWeek(開始日)
5、曜日(タイプ「テキスト」)……除きたい「特定の曜日」を入力するフィールドです。
 なお、入力に当たっては値一覧で定義し、ポップアップメニューで入力する方が便利でしょう。
7、曜日順(タイプ「計算」計算結果「数字」)」
  計算式……Case(曜日 ="日曜日",1,曜日="月曜日",2,曜日="火曜日",3,曜日="水曜日",4,曜日="木曜日",5,曜日="金曜日",6,曜日="土曜日",7)
7、期間中の曜日数(タイプ「計算」計算結果「数字」)
  計算式………If((0>曜日順 - 開始日の曜)or(曜日順-開始日の曜>=Mod(期間日数,7)),Int(期間日数/7),Int(期間日数/7)+1)
8、特定の曜日を除いた日数(タイプ「計算」計算結果「数字」)
  計算式………期間日数 - 期間中の曜日数
 以上で答えが出ると思います。(自信ありとしたのは、テストの結果一応正解が出たという意味です。)
 なお、「一応」という意味は、ご存知かも知れませんが、ファイルメーカーの場合はエクセルと違って「DATEDIF」のような関数がないため、期間計算や年齢計算の場合、極めて複雑な計算をしないと閏年の関係で2年おきに1日の誤差が生じることがあります。したがって前記の場合も計算期間が長期間(例えば1年以上)になると誤差が生じる可能性がないとはいえません。しかしそこまで考慮して計算式に引用すると式が極めて複雑になるため、今回は省いておりすのであらかじめご了承ください。
(お暇があれば下記URLをご参照ください。)
http://okwave.jp/kotaeru.php3?q=1739838

>特定の曜日を除いた日数を求めたい
 特定の曜日は複数(土・日など)の場合もあるかも知れませんが、ここでは例えば日曜だけというように単数の場合に限定してお答えします。
 複数の場合があるときは、下記にならい、フィールドを複数設けて計算してください。
 次のとおり入力フィールド及び計算フィールドを作ります。
1、開始日(タイプ「日付」)……入力フィールドです。
2、終了日(タイプ「日付」)……入力フィールドです。
3、期間日数(タイプ「計算」計算結果「数字」)
  計算式………終了...続きを読む

Q売れない映画。一体誰が悪いのでしょうか?

売れない映画。一体誰が悪いのでしょうか?
売れなくて、評判の悪い映画がたまにあります。
売れないのは誰の責任でしょうか?
原本を作った人でしょうか?それとも映画監督でしょうか?それとも主人公の演技力不足でしょうか?

原本が結構良くて映画は全く売れなかったのもありますし。
主人公の演技力不足が原因で売れなかった、とられるのもどうかと思います。なぜなら演技が下手な俳優を雇うなら他の俳優を雇えば良いわけですし、演技が下手なら監督がそれなりに指導すれば何とかなります。
「売れない映画=監督が悪い」場合が多いのでしょうか?

Aベストアンサー

>売れないのは誰の責任でしょうか?

プロデューサーでしょう。
要は広告の打ち方が下手だった。と。
広告の費用がなければ、それを
引っ張ってこれなかった人の責任ともいえるわけで。

QSQL(初心者です) 3つのテーブルを結合

下のような3つのテーブルを結合したいのですが
SQL1つで可能でしょうか?

条件は
1.品種機械テーブルを読み込みます。
品種でユニークしますが使用日付を降順にならべ変えます。品種機械テーブルから使用日付がMAXのものの行データをすべて取得(下の場合:A 4 20051204・・)ほかはいりません。

2.品種テーブル読み込む。
1で取得した品種と一致する行データをすべて取得

3.機械テーブルを読み込む
2で取得した機械と一致する行データをすべて取得

うまい方法がおもいつかないのでアドバイスや
参考になりそうなホームページなどありましたら教えていただけないでしょうか?
宜しくお願いします。

---------------------------------------------
(1)品種テーブル(品種を管理)
品種  ・・・etc
A  
B
C
D
---------------------------------------------
(2)機械テーブル(機械を管理)
マシン ・・・etc
1
2
3
4
------------------------------------------
(3)品種機械テーブル(品種と機械を管理)
品種 | マシン | 使用日付 |・・・etc
A | 1 | 20051201
A | 2 | 20051202
A | 3 | 20051203
A | 4 | 20051204

下のような3つのテーブルを結合したいのですが
SQL1つで可能でしょうか?

条件は
1.品種機械テーブルを読み込みます。
品種でユニークしますが使用日付を降順にならべ変えます。品種機械テーブルから使用日付がMAXのものの行データをすべて取得(下の場合:A 4 20051204・・)ほかはいりません。

2.品種テーブル読み込む。
1で取得した品種と一致する行データをすべて取得

3.機械テーブルを読み込む
2で取得した機械と一致する行データをすべて取得

うまい方法がおもいつかないのでアドバイ...続きを読む

Aベストアンサー

#1の bonaronです。
仕様を誤解してました。
それも、途中のクエリをアップしてしまった(^^;

>3.機械テーブルを読み込む
>2で取得した機械と一致する行データをすべて取得

ということで、(1)品種テーブルには、マシンのフィールドがあるのでしょうか?

品種 マシン・・・
A  1
A  2
・  ・
A  9
B  21
・  ・

のように。

仕様の確認ですが
1.(3)のテーブルから[使用日付]の
  最大値 "20051204"を取得。
2.(3)のテーブルから"20051204" の品種(A,B,D等)を取得。
3.品種テーブルから、2の A,B,D のデータを取得。
  上の品種テーブルの例ではA-1~A-9、B-21~・・。
4.機械テーブルから、3の 1,2,・・・9,21・・・を取得。
  最終的に必要なのは、このデータのみ。

上記仕様のクエリです。

SELECT *
FROM 機械テーブル INNER JOIN
[SELECT マシン FROM 品種テーブル
WHERE 品種 In
(SELECT DISTINCT 品種
FROM 品種機械テーブル
WHERE 使用日付=DMax("使用日付","品種機械テーブル"););]. AS Q品種
ON 機械テーブル.マシン = Q品種.マシン
ORDER BY 機械テーブル.マシン;

#2回答者さんへ
>#1回答者さんが使用している「TOP」は、SQL SERVERだけの機能だと思います。

Accessにも、もちろん「TOP」は存在します。
クエリのプロパティの「トップ値」です。

#1の bonaronです。
仕様を誤解してました。
それも、途中のクエリをアップしてしまった(^^;

>3.機械テーブルを読み込む
>2で取得した機械と一致する行データをすべて取得

ということで、(1)品種テーブルには、マシンのフィールドがあるのでしょうか?

品種 マシン・・・
A  1
A  2
・  ・
A  9
B  21
・  ・

のように。

仕様の確認ですが
1.(3)のテーブルから[使用日付]の
  最大値 "20051204"を取得。
2.(3)のテーブルから"20051204" の品種(A,B,D等)...続きを読む

QCDが売れない

音楽のことが疎いので質問します。
CDが売れないとはよく聞くけど、携帯からダウンロードした方が安く音楽が聞けるのでしょうか?
CDが売れないといいながら携帯で安く購入できたら、安いほうが人気が出るのは仕方ないと思うのですが。

Aベストアンサー

一番の違いは「スピード」なんじゃないでしょうか?
今話題の新曲をすぐ手に入れたい、取り込みたいならダウンロードの方が早いでしょう。
CDは発売されるまでに時間がかかりますからね。

あとは、欲しい曲を欲しい分だけ、CDの収納場所もいらないというのが利点なんだと思います。
ただし、嗜好ジャンルによっても意見は分かれると思いますね。
普段あまり邦楽は聞かない私のような人は配信スピードはあまり重要ではありません。なので、もっぱらCD購入派ですね。
また、携帯ダウンロードも特別安いとは思いません。ダウンロード代+パケ代、それにサイトによっては月額使用料が別途かかりますから。

QSQL:Access:プライオリティが異なる2つのテーブルのマージ

みなさん、こんばんは。

下記のような TBLmain、TBLsub という2つのテーブルをマージするにあたって、
主キーが同じであるレコードがそれぞれのテーブルに存在する場合には、
TBLmain を優先させ、TBLresult のような結果を得たいのですが、
どのように SQL を記述すればよいのでしょうか?
DB は Access2000 を使用しています。

どうぞ、よろしくお願いいたします。

TBLmain
1 aaa
4 bbb
8 ccc

TBLsub
1 XXX
2 TTT
3 YYY

TBLresult
1 aaa
2 TTT
3 YYY
4 bbb
8 ccc

Aベストアンサー

メインの全レコードと、サブとメインの不一致クエリーから求めたサブのレコードをunionで和を求めています。

select f1, f2 from TBLmain
union all
select s.f2, s.f2
from TBLmain as m right join TBLsub as s
on m.f1 = s.f1
where isnull(s.f2);

#SQLを回答してもらいたかったらフィールド名くらい書いておきましょうね。

Q事故物件の土地は売れない?

内容にもよると思いますが事故物件の土地は売れないのでしょうか?
相場よりも下げて売りに出してますがなかなか売れません。
売れたという方がいればどのような経緯と金額で売れましたか?

Aベストアンサー

都市部では安く帰るので、事故物件の人気が高い状況が続いています。
が、地方ではゲンを担ぐ人が多いので、敬遠される方が多いようです。

一般的には、不動産屋に一任するしか無いのが現状みたいですね。

案①
一旦、相場の金額に戻して、事故物件の説明時に値引いて、お得感を出す。

案②
親族の誰かに名義を一旦変えてから売る。
※税金が発生しますけど、一旦、他者の物になれば告知義務は無くなります。

案③
ちょっといやだけど、土地を担保に融資を受けて、そのまま差し押さえしてもらう。

案④
貸し駐車場にして数年活用する。

Q2つのmdb内にある同名テーブルのフィールド比較

同じ名前のmdbが2つ存在しておりまして、A.mdbのテーブル内のAテーブルと
B.mdb内にあるAテーブルが、同じかどうかを判断するために、フィールドの比較を行いたいのですが、何かよい方法を御存じの方いらっしゃいますか?

Aベストアンサー

まず、異なるMDBファイルに保存されているA・Bのテーブルを比較するための環境を作ります。
これは、C.mdbとでも名づけて新たに作成しましょう。

(以下はC.mdb内での処理記述となります。)

A・Bそれぞれに存在する、同名のテーブルへリンクを行い、
C.mdb内で比較すべき2つのテーブルを扱えるようにします。

後は、下記参考ページの説明に従って作業を進めることができます。

やってみると、それほど難しいものではありませんので、頑張ってください。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング