0

次のように、10分間隔で最後の1時間の詳細を取得するために少し検索しました

現在の時刻が10:30だとすると、次のような出力が期待できます。解決策を提案してください。

  TIME_SLOT

09:31 - 09:40
09:41 - 09:50
09:51 - 10:00
10:01 - 10:10
10:11 - 10:20
10:21 - 10:30

(CUSTOMER)という形式のテーブルがあります(図1.1)

M_CODE  H_CODE END_TIME_OF_SERVICE ADULT ADULT_F
TKLK    LONE     09:19:16           1     2
TKLK    LONE     09:22:11           4     6
TKLK    LONE     09:32:46           2     7
TKLK    LONE     09:32:46           4     9
TKLK    LONE     10:09:36           1     3

そして、(SELECT strftime('%H:%M'、end、'-9 minutes')||'-' || strftime('%H:%M'、end)AS time_slot FROM end_times)itを実行すると正しい出力を次のように与えます(図-1.2)

09:19 - 09:28
09:29 - 09:38
09:39 - 09:48
09:49 - 09:58
09:59 - 10:08
10:09 - 10:18 

これらの2つのテーブルをマップする方法をガイドできますか?たとえば、CUSTOMERテーブルのレコードをadult列とadult_f列で合計する必要があるとします(図1.2から図1.1)。

   ADULT    ADULT_F    TIME_SLOT
      5        8      09:19 - 09:28
      6       16      09:29 - 09:38
      0        0      09:39 - 09:48
      0        0      09:49 - 09:58
      0        0      09:59 - 10:08
      1        3      10:09 - 10:18 

解決策を教えてください。お時間をいただきありがとうございます。

4

1 に答える 1

2

SQLクエリは、テーブルに格納されているデータを処理するように設計されています。これらの日付を作成する場合は、これらの値を一時テーブルに挿入するのが最も簡単な場合があります。

または、値を1つずつ作成することもできます。まず、現在の時刻からのオフセットを定義します。

CREATE VIEW intervals AS
SELECT -50 AS offset UNION ALL
SELECT -40           UNION ALL
SELECT -30           UNION ALL
SELECT -20           UNION ALL
SELECT -10           UNION ALL
SELECT   0

次に、次のようにタイムスロットエンドポイントを作成できます。

CREATE VIEW end_times AS
SELECT datetime('now', offset || ' minutes') AS end
FROM intervals

次に、次のようにタイムスロットをフォーマットします。

SELECT strftime('%H:%M', end, '-10 minutes') || ' - ' ||
       strftime('%H:%M', end               ) AS time_slot
FROM end_times
于 2012-10-08T07:07:00.327 に答える