簡體   English   中英

SQL:我需要使用一個Case格式將Select Distinct語句格式化為值之一

[英]SQL: I need to format a Select Distinct Statement with a Case as one of the values

因此,我嘗試從具有如下時間格式的表中選擇不同的運算符:“ MM / DD / YYYY HH:MI:SS AM”。

邏輯是這樣的:

(if C_StartTime >= date(C_StartTime) + 6:00:00 AM 
AND C_StartTime < date(C_StartTime) + 5:59:59AM 
then C_StartTime,'MM/DD/YYYY' 
ELSE (C_StartTime,'MM/DD/YYYY')-1)
AS DateOnly

我現在可以選擇不同的運營商,但他們每天登錄和注銷幾次,因此時間有所不同。 應當注意,該公司的“今天”是3/13/19 6:00:00 AM到3/14/19 5:59:59 AM。

以下是我嘗試執行的最終代碼

SELECT
  DISTINCT (
    (
      CASE WHEN C_StartTime >= date(C_StartTime) +.25
         AND C_StartTime < date(C_StartTime) +.9999 
         THEN date(C_StartTime) 
         ELSE date(C_StartTime) -1
    ) as DateOnly,
    C_operator,
    C_operatorname,
    C_WorkCentreName
    FROM
      OPERATORTABLE
    WHERE
      .....

編輯>>>>>>

這就是我得到的。

這就是我所需要的

我正在尋找操作員編號,操作員名稱和日期(知道1/4/2019 5:59:00 AM = 1/3/2019

我認為您可能正在使用trunc(c_starttime - 6/24) + 6/24來讓一天從早上6點開始而不是午夜開始:

WITH dts AS (SELECT to_date('13/03/2019 05:59:59', 'dd/mm/yyyy hh24:mi:ss') dt FROM dual UNION ALL
             SELECT to_date('13/03/2019 06:00:00', 'dd/mm/yyyy hh24:mi:ss') dt FROM dual UNION ALL
             SELECT to_date('13/03/2019 06:00:01', 'dd/mm/yyyy hh24:mi:ss') dt FROM dual UNION ALL
             SELECT to_date('14/03/2019 05:59:59', 'dd/mm/yyyy hh24:mi:ss') dt FROM dual UNION ALL
             SELECT to_date('14/03/2019 06:00:00', 'dd/mm/yyyy hh24:mi:ss') dt FROM dual)
SELECT dt,
       dt - 6/24 adj_dt,
       TRUNC(dt - 6/24) trunc_adj_dt,
       TRUNC(dt - 6/24) + 6/24 adj_start_of_dt
FROM   dts;

DT                  ADJ_DT              TRUNC_ADJ_DT        ADJ_START_OF_DT
------------------- ------------------- ------------------- -------------------
13/03/2019 05:59:59 12/03/2019 23:59:59 12/03/2019 00:00:00 12/03/2019 06:00:00
13/03/2019 06:00:00 13/03/2019 00:00:00 13/03/2019 00:00:00 13/03/2019 06:00:00
13/03/2019 06:00:01 13/03/2019 00:00:01 13/03/2019 00:00:00 13/03/2019 06:00:00
14/03/2019 05:59:59 13/03/2019 23:59:59 13/03/2019 00:00:00 13/03/2019 06:00:00
14/03/2019 06:00:00 14/03/2019 00:00:00 14/03/2019 00:00:00 14/03/2019 06:00:00

我選擇了adj_dt和trunc_adj_dt列,以便您可以看到如何從原始dt列計算adj_start_of_dt列。

您可能不需要在開始日期列中輸出上午6點,因此可以跳過該時間(例如,在這種情況下,緊隨其后的是trunc_adj_dt)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM