1
>          cycleNO| month |   year|  start date |    close date         |state | prv month  | next mnt 
>             1      4        2012    1/4/2012     30/4/2012 23:59:59      1       3                5
>             1      5        2012    1/5/2012     31/5/2012 23:59:59      0       4                6  
>             1      6        2012    1/6/2012     30/6/2012 23:59:59      0       5                7  
>             1      7        2012    1/7/2012     31/7/2012 23:59:59      0       6                8
>             2      4        2012    1/4/2012     30/4/2012 23:59:59      1       3                5
>             2      5        2012    1/5/2012     31/5/2012 23:59:59      0       4                6  
>             2      6        2012    1/6/2012     30/6/2012 23:59:59      0       5                7  
>             2      7        2012    1/7/2012     31/7/2012 23:59:59      0       6                8

上記のようなテーブル(cycle_set)があり、状態= 0の条件で(cycleNO、month、year、start date、close date)をフェッチしたいのですが、start-close dateには、翌月のシステム日付も含まれています。状態=0。

出力は次のようになります:

cycleNO | month | year | start date | close date 
1      5        2012    1/5/2012     31/5/2012 23:59:59
1      6        2012    1/6/2012     30/6/2012 23:59:59
2      5        2012    1/5/2012     31/5/2012 23:59:59
2      6        2012    1/6/2012     30/6/2012 23:59:59
4

3 に答える 3

1
SELECT cycleNO,month,year,start_date,close_date FROM cycle_set
WHERE state=0
AND MONTH(start_date) = (SELECT month FROM cycle_set WHERE state=0 AND...)
AND MONTH(close_date) = (SELECT month FROM cycle_set WHERE state=0 AND...)

問題は、次の結果月を選択する方法がないことです。これらの2つの副選択のWHERE句には何が入りますか?

すべてのデータを抽出してから、PHPまたは使用しているもので作業した方がはるかに簡単です。

于 2012-05-10T10:59:54.913 に答える
1
select cycleNO,month,year,start_date,close_date 
FROM cycle_set
WHERE state=0 and sysdate between start_date and close_date

更新:現在と来月の両方を取得したい場合:

select cycleNO, month, year, start_date, close_date 
FROM cycle_set
WHERE state=0 
   and ( sysdate between start_date and close_date or --current month
         sysdate between add_months(start_date,-1)  and close_date --next_month
        )
于 2012-05-10T12:10:06.757 に答える
0

(例に示すように)データセットがあると仮定します。

    SELECT  cycleno,month,year,start_date,close_date 
      FROM  cycle_set
     WHERE  state=0 
       AND  (   month = EXTRACT(month FROM sysdate) 
             OR month = EXTRACT(month FROM sysdate)+1
            )
  ORDER BY  cycleno, month, year, start_date
于 2012-05-10T19:31:13.640 に答える