2014-09-24 79 views
0

我有一張表,它提供了每天不同項目的單位銷售額。我想總結一些用戶定義(有效任意,無法直接從數據中指定)期間的銷售額。用戶定義的日期分區sql

我試圖通過創建一個字段,指定是否在期限內的日期,然後我可以通過這個分組。但是,我的代碼給我錯誤「ORA-00923:FROM關鍵字找不到預期的地方」。

我的代碼:

select 
SUM(UNIT_SALES), 
PERIOD = 
    CASE 
      WHEN DAY_DATE >= TO_DATE('04/07/2013', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('26/09/2013', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity' 
      WHEN DAY_DATE >= TO_DATE('27/09/2013', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('01/04/2014', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity' 
      WHEN DAY_DATE >= TO_DATE('14/05/2014', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('21/09/2014', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity' 
      ELSE 'NO PERIOD ASSIGNED' 
    END 
FROM MY_SALES_DAILY 
GROUP BY PERIOD 
ORDER BY PERIOD 

我怎樣才能做到這一點和用戶定義的時間段?

回答

0

您的語法不正確。 PERIOD =不正確。請參閱下面的更正的SQL。

select 
SUM(UNIT_SALES), 
    CASE 
      WHEN DAY_DATE >= TO_DATE('04/07/2013', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('26/09/2013', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity' 
      WHEN DAY_DATE >= TO_DATE('27/09/2013', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('01/04/2014', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity' 
      WHEN DAY_DATE >= TO_DATE('14/05/2014', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('21/09/2014', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity' 
      ELSE 'NO PERIOD ASSIGNED' 
    END AS PERIOD 
FROM DW_MASTER_SALES_DAILY 
GROUP BY  CASE 
      WHEN DAY_DATE >= TO_DATE('04/07/2013', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('26/09/2013', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity' 
      WHEN DAY_DATE >= TO_DATE('27/09/2013', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('01/04/2014', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity' 
      WHEN DAY_DATE >= TO_DATE('14/05/2014', 'DD/MM/YYYY') AND DAY_DATE <= TO_DATE('21/09/2014', 'DD/MM/YYYY') THEN 'Start of Period of pre_activity' 
      ELSE 'NO PERIOD ASSIGNED' 
      END 
ORDER BY PERIOD 
+0

非常感謝您的幫助。在使用你的代碼時,我收到錯誤「INVALID SQL STATEMENT」。然而,我使用的是我發現的TOAD,它和我以前用過的語法略有不同。我可以問你用於代碼的東西嗎? – branches 2014-09-24 16:17:52

+0

我用在這個例子中TSQL。你使用的是什麼RDBMS? Oracle,mysql,? – JNevill 2014-09-24 16:25:00

+1

您好,很抱歉,竟然沒有成爲問題。我需要通過把案件進組,現在它的工作原理。我編輯了答案。謝謝你的幫助。 – branches 2014-09-24 16:26:47