sql >> データベース >  >> RDS >> Oracle

OracleでのSQL稼働週

    要件については、IWの組み合わせを使用する必要があります およびWW フォーマット。 ケースを使用してそれらを組み合わせることができます 式。

    年間の日付のリストを生成する場合は、 行ジェネレーター メソッド。

    SQL> WITH sample_data AS(
      2  SELECT DATE '2015-12-28'    + LEVEL -1 dt FROM dual
      3  CONNECT BY LEVEL <= 15
      4  )
      5  -- end of sample_data mimicking real table
      6  SELECT dt,
      7    TO_CHAR(dt, 'DY') DAY,
      8    NVL(
      9    CASE
     10      WHEN dt < DATE '2016-01-01'
     11      THEN TO_CHAR(dt, 'IW')
     12      WHEN dt >= next_day(TRUNC(DATE '2016-01-01', 'YYYY') - 1, 'Monday')
     13      THEN TO_CHAR(dt                                      +7, 'IW')
     14    END, '01') week_number
     15  FROM sample_data;
    
    DT         DAY WEEK_NUMBER
    ---------- --- -----------
    2015-12-28 MON 53
    2015-12-29 TUE 53
    2015-12-30 WED 53
    2015-12-31 THU 53
    2016-01-01 FRI 01
    2016-01-02 SAT 01
    2016-01-03 SUN 01
    2016-01-04 MON 02
    2016-01-05 TUE 02
    2016-01-06 WED 02
    2016-01-07 THU 02
    2016-01-08 FRI 02
    2016-01-09 SAT 02
    2016-01-10 SUN 02
    2016-01-11 MON 03
    
    15 rows selected.
    

    注:

    15 OPはテストケースにcreateステートメントとinsertステートメントを提供しなかったため、15行を生成し、日付はWITH句を使用したデモンストレーションのために上記でハードコーディングされています。実際には、テーブル名と列名を使用する必要があります。



    1. MySQL General / Slow Query Logsでパスワードを非表示にすることは可能ですか?

    2. (大きい?)数の値に対するMySQLINオペレーターのパフォーマンス

    3. デフォルトのMySQLデータベース名

    4. SQLJOINの難しさ-結合条件で行を制限する方法が必要なようです