0

年、月、週、日、日のような列を持つカレンダーテーブルと呼ばれるテーブルがあります。day フィールドには、1、2、....7 のような値があります。

そこからタイムスパンを作りたい。月曜日から火曜日 (12:00)、火曜日 (12:00) から水曜日 (17:00) までの 1 つのスパンのように。1週間以内に

このために、私は次のようなクエリを書いています

SELECT 
    year, 
    week, 
    (SELECT date WHERE day = 1) AS st_date,
    (SELECT date WHERE day = 2) AS end_date 
FROM calendar 
GROUP BY year, week

上記の構文が正しくないことは承知しています。この問題を解決できる構文があれば教えてください。

実際のテーブル定義は日本語なので、英語の列名に置き換えました。これは通常のカレンダーとは異なるカレンダー表です

登録ツールでは、ユーザーが期間外ではなく登録できるユーザーの期間を作成したいと考えています。

私の元のテーブルは次のようになります。

日付 年 月 曜日
--------------------------------------------
2013/06/19 34 06 44 3
2013/06/21 34 07 44 5
2013/06/24 34 07 45 1
2013/06/25 34 07 45 2
2013/06/26 34 07 45 3

次のように出力するのが好きです

年 週 A_reg_range_st A_reg_range_end B_reg_range_st B_reg_range_end
-----------------------------------------------
34 45 2013/06/24 00:00:00 2013/06/25 12:00:00 2013/06/25 12:00:00 2013/06/26 17:00:00
4

1 に答える 1

1
SELECT 
    year, 
    week, 
    CASE WHEN (day = 1) THEN date  AS st_date,
    CASE WHEN (day = 2) THEN date  AS end_date
FROM calendar 
GROUP BY year, week
于 2013-06-21T05:18:43.753 に答える