• 締切済み

月を日に展開したい

以下のような列をもつテーブルt_monthがあります。 month(プライマリキー) month_mony mon_flg tue_flg wed_flg thu_flg fri_flg sat_flg sun_flg また、以下の列をもつテーブルt_dayがあります。 day(プライマリキー) day_mony _flgの列は、"1"か"0"が入っています。 month の月において、_flgで "1" が入っている 曜日の日だけというのを条件にt_dayにその日の日付とmonth_monyの値をdayとday_monyにインサートしたいのですが、 一発で組めるSQLはできますでしょうか。 いわゆる月を日に展開したテーブルを作りたいのです。テーブルの構成を変えるというのは無しでお願いします。

みんなの回答

  • cse_ri2
  • ベストアンサー率25% (830/3287)
回答No.1

RDBの種類は何ですか? イメージが今一つ掴めないのですが、Oracleだったら 自前の関数で月→日の変換は比較的に簡単にできます。 それから、カラム名だけでなくてカラムの型も教えて 欲しいですね。

masa1214
質問者

お礼

ご返答ありがとうございました。もう少し頭を整理します。

関連するQ&A

  • plorogプログラミング

    たとえば /*ミラノ:ロンドン*/ timetable(mil,lon,[0735,0845,az226,[sun,mon,tue,wed,thu,fri,sat]]). timetable(mil,lon,[0755,0900,ba571,[sun,mon,tue,wed,thu,fri,sat]]). timetable(mil,lon,[0815,0925,ba561,[sun,mon,tue,wed,thu,fri,sat]]). timetable(mil,lon,[1020,1125,az228,[sun,mon,tue,wed,thu,fri,sat]]). timetable(mil,lon,[1130,1230,ba565,[sun,mon,tue,wed,thu,fri,sat]]). というフライトデータがあるとして、ここからフライト時間を割り出すにはどうしたらいいんでしょうか? 述語が分かる方お願いします。

  • カウント結果をカレンダー表示するプログラムを教えてください

    カウント結果をカレンダー表示するプログラムを教えてください サイトのアクセス数をカウントして、カレンダーデザインで表示したファイル出力できるperlプログラムを教えてください。 カウント済みファイル1(格納形式:カウント数 日付)があります。 10 2010-10-01 11 2010-10-02 8 2010-10-03 4 2010-10-08 6 2010-10-09 … 3  2010-11-01 … これを 下記のような形式で表示したいです。 2010-10 Sun, Mon, Tue, Wed, Thu, Fri, Sat , , , , , 10, 11 8, 0, 0, 0, 0, 4, 6 … 2010-11 Sun, Mon, Tue, Wed, Thu, Fri, Sat , 3 ,… どのようにすると上記のようなカレンダー上に カウント数を表示できるのか 教えてください。よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • perl qw(aaa bbb ccc)[$hoge]のような記述

    my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); $wday = sprintf("%s", qw(Sun Mon Tue Wed Thu Fri Sat)[$wday]); 2行目のsprintfですが、qw(Sun Mon Tue Wed Thu Fri Sat)[$wday]はどのようなことが行われているのでしょうか? sprintf("%s", "hello world!");みたいな基本的なものならsprintfの使い方はわかります。ですが、qw(aaa bbb ccc)[$hoge]のような記述についてがわかりません。 上記の例でいえば、どういう結果になるのかはわかるのですが、どういう過程で代入されているのかがわかりません。 qw(Sun Mon Tue Wed Thu Fri Sat)[$wday]という書式はどういうことが行われているのか教えてください。よろしくお願いします。

    • ベストアンサー
    • Perl
  • カレンダー sun(日)の横にDimと書いてあります

    2009年のカレンダーを買いました。 曜日を意味する、sundayやmondayは分かります。 しかし、その横に、Dimとか、各曜日の横に3文字書いてあります。 何の意味か分かりません。 ご存知の方、Dimなどが、何の略かも、どうか教えてください。 sun/Dim mon/Lun Tue/Mar Wed/Mer Thu/Jeu Fri/Ven Sat/Sam

  • 時計の曜日表示について

    先日、アナログでSEIKOの腕時計をプレゼントしていただいたのですが、この時計の曜日表示をまわしてみてみると、 MON.LUN.TUE.MAR.WED.MIE.THU.JUE.FRI.VIE.SAT.SAB.SUN.DOM というような感じで並んでいるんです。2つペアで月曜から日曜まで並んでいるのはわかりますが、はじめのほうは英語でいいのですが、後のほうの読み方が分かりません。いちおう調べてみたのですが、上手く当てはまる言語がないのです。 どなたか分かる方がいたら、教えて下さい。

  • 時計のDOMやらLUNって何でしょう?英語?

    オークションで 中古の外国製の腕時計を購入したのですが、 曜日の事でわからないことが あります。 それは、日、月、火と続くのではなくて SUN → DOM MON → LUN TUE → MAR WED → MIER THU → JUEV FRI → VIER SAT → SAB と、変わっていくんです。 なんとなくはわかるのですが これが何を意味しているのか 教えてください。

  • function NOW () について

    こんにちは。宜しくお願いします。 ソフトのバージョンは、CS5です。 他人の作ったflashなんですが、変数として、Ldateがあります。 Ldate = this.NOW(); function NOW () { d_w = new Array('SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'); mo = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); n_date = new Date(); todaydate = n_date.getDate(); day = n_date.getDay(); dayname = d_w[day]; month = n_date.getMonth(); monthname = mo[month]; year = n_date.getFullYear(); fulldate = dayname+", "+monthname+" "+todaydate+", "+year; return fulldate; } 以上の用に書いています。 今日(2011年11月25日)ですと、上記によれば、   FRI,November,25,2011 のように表示されるのを目的にしていると思うんですが、         ,25,2011 としか、出てません。 どう書き変えたら良いのでしょう?さっぱり分かりません。 宜しくお願いします。

    • ベストアンサー
    • Flash
  • PHPで明日の日付と明日の曜日を取得したい

    <td align="center"><?php date_default_timezone_set('Asia/Tokyo'); $week2 = array( 'Mon'=>'月', 'Tue'=>'火', 'Wed'=>'水', 'Thu'=>'木', 'Fri'=>'金', 'Sat'=>'土', 'Sun'=>'日' ); $w = $week2[date('D')]; echo date("j日") . "($w)"; ?></td> 上記のコードで今日の日付と曜日が取得出来るのですが、明日の日付と明日の曜日を取得するのはどうすれば良いのでしょうか。

  • Excel - ちょっとややこしい値の引き方

    宜しくお願いします。 文字で説明するのが難しいのですが、例えば。 Sheet1が【集計表】、Sheet2が【データ】(数字で入力)というブックがあるとしまして、【データ】から【集計表】に、曜日ごとの合計値を引きたいとします。 --------------------------------------------  Sun Mon Tue Wed Thu Fri Sat A B C -------------------------------------------- こんな表になります。 そしてA,B,Cは任意に入力できるようにして、例えばAであれば、【データ】シート上の[A1:C10]というように、引いてくる元の範囲を可変にするとします。ABCに対する範囲は固定で、ABCの横に並んだ状態であらかじめ用意されているとします。 -------------------------------------------- A A1:C10 B D1:F10 C G1:I10  Sun Mon Tue Wed Thu Fri Sat □ □ □ ↑任意のアルファベットを入れます -------------------------------------------- こういう状態です。 ここで、例えばCの項目の、日曜日の合計を出そうと思ったら、範囲はINDIRECTか何かで引くとして、SUMIF?SUMPRODUCT?どのようにすれば良いでしょうか。色々試してみたのですが、何故かどれも0になってしまいまして。 (SunのセルをE2とします)

  • C言語「3次元配列で1年間分のカレンダー作成」

    C言語課題で3次元配列で与えられた年の1年間分のカレンダーを作成するという課題で日数の表示の方法が分かりません。回答などいただけると参考になりますので教えていただけるとありがたいです。 現在の状態です(この状態ではエラーは起きていません) #pragma warning(disable:4996) #include <stdio.h> #include <Windows.h> enum M_LIST { JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC, N_MONTH }; enum W_LIST { SUN, MON, TUE, WED, THU, FRI, SAT, N_WEEK }; char *weekday[] = { "SUN","MON","TUE","WED","THU","FRI","SAT"}; //曜日 int mday[] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; //各月の日数 /*プロトタイプ宣言*/ int monthday(int year); void karenda(int total); /*メイン*/ void main(void) { int year; /*画面制御の初期化*/ COORD coord; HANDLE hStdout; hStdout = GetStdHandle(STD_OUTPUT_HANDLE); char cal[N_MONTH][N_WEEK][N_WEEK] = { 0 }; //3次元配列を宣言し0を入れる printf("西暦を入力"); scanf("%d", &year); //年度の入力 karenda(monthday(year)); } /*求める月の前月までの総日数*/ int monthday(int year) { int total = 0; /*求める年の前年までの総日数を求める*/ total = (((year - 1) * 365) + ((year - 1) / 4) - ((year - 1) / 100) + ((year - 1) / 400) + 1)%7; /*うるう年の判定*/ if ((year % 4) == 0 && (year % 100) != 0 && (year % 400) == 0) { mday[FEB] = 29; } else { mday[FEB] = 28; } return total; } /*カレンダー*/ void karenda(int total) { int month, row, day; for (month = JAN; month < N_MONTH; month++) { row = 0; day = 1; while (day <= mday[month]) { for (row = SUN; row < N_WEEK; row++) { if (day <= SAT) { day++; } } day++; } } } よろしくお願いします。 注)karenda(int total)にはprintfを使わず完成させたいです。