不是很清楚你的意思,如果没有找到匹配记录是更新 year(or month)字段还是插入一条新记录?

解决方案 »

  1.   

    对不起,搞错了.ID不是PKEY 如果没有找到匹配记录,就根据PKEY,到下月的那条记录里去查
    year (PKEY)         2005
    month  (PKEY)       02
      

  2.   

    对不起,更正一下,请参考以下:
    有一个表,有如下字段: 假设今天是2005年2月2号,想从表里day_03字段开始查询,查到day_31,找到第一个
    是0的字段名,如果没有就在MONTH上加1,到下个月去,从day_01开始查,如果month是12的话,就将year加1,再从day_01开始查,始终是为了找到第一个内容是0的字段名.
    急,在线等
    字段名         内容(day_01等的内容,0表示上班,1表示休息)
    id                    1000
    year  (pkey1) 2005
    month (pkey2) 02
    day_01         1
    day_02         0
    .
    .
    day_30         1
    day_31         0
      

  3.   

    先创建一个视图,如果不能创建视图,可以作子查询:
    create or replace view my_calendar
    as
    select yt.year, yt.month, '01' day, sum(yt.day_01) value
      from your_table yt
     group by yt.year yt.month
    union
    select yt.year, yt.month, '02' day, sum(yt.day_02) value
      from your_table yt
     group by yt.year yt.month
    union
    select yt.year, yt.month, '03' day, sum(yt.day_03) value
      from your_table yt
     group by yt.year yt.month
    union
    ...
    union
    select yt.year, yt.month, '31' day, sum(yt.day_31) value
      from your_table yt
     group by yt.year yt.month;然后根据你输入的日期对视图进行查询:
    select mc.vlaue
      from my_calendar mc
     where mc.year = to_char(日期, 'YYYY')
       and mc.month = to_char(日期, 'MM')
       and mc.day = to_char(日期, 'DD');
      

  4.   

    我的日期是从另一个表提出来的.
    而且要在ASP.NET(VB.NET),ORACLE9I里使用的.
    请再看看
    谢谢
      

  5.   

    根据你输入的日期对视图进行查询:
    select mc.year||'-'||mc.month||'-'||mc.day next_work_day
      from my_calendar mc
     where 
       mc.year||'-'||mc.month||'-'||mc.day > to_char(日期,'YYYY-MM-DD')
       and mc.value = 1;
      

  6.   

    下面有语法错误
    日期:20050202
    可以吗?where 
       mc.year||'-'||mc.month||'-'||mc.day > to_char(日期,'YYYY-MM-DD')
       and mc.value = 1;
      

  7.   

    什么样的语法问题啊?我这儿没有问题啊。
    select * from a;
    A B C D
    2005 02 02 1
    2005 02 03 0
    2005 02 04 1
    2005 02 05 1
    2005 02 01 1
    2005 02 06 1
    2005 02 07 1
    select *
      from a
     where a.a || '-' || a.b || '-' || a.c >
           to_char(sysdate - 25, 'YYYY-MM-DD')
       and a.d = 1;
    结果是:
    A B C D
    2005 02 06 1
    2005 02 07 1用日期格式YYYYMMDD也可以,处理就更简单了。
    where 
       mc.year||mc.month||mc.day > to_char(日期,'YYYYMMDD')
       and mc.value = 1;
      

  8.   

    对不起,我后面还有一项,也要提出来,就是月末日
    month_end,后面一用分组,就出错误
      

  9.   

    对不起,其他都好了,只是最后,都不对
    where 
       mc.year||mc.month||mc.day > to_char(20050202,'YYYYMMDD')
       and mc.value = 1where 
       mc.year||mc.month||mc.day > to_char('0050202','YYYYMMDD')
       and mc.value = 1
      

  10.   

    `OK,THANK YOU
    mc.year||mc.month||mc.day > 20050202