2016-02-12 88 views
0

我是新的tableau參數。我試圖執行以下查詢,但不知何故,它給了我缺少括號錯誤。案例陳述客戶查詢

SELECT 

CASE 
    WHEN <Parameters.Timeframe> = 'YTD' 
    THEN TO_CHAR(to_date('01-JAN-' || to_char(sysdate, 'YYYY'), 'dd-mon-yyyy')) 

    WHEN <Parameters.Timeframe> = 'MTD' 
    THEN TO_CHAR(TO_DATE('01-' || TO_CHAR(SYSDATE,'MON-YYYY'),'DD-MON-YYYY')) 

    WHEN <Parameters.Timeframe> = 'QTD' and TO_CHAR(SYSDATE,'Q') = 1 
    THEN TO_CHAR(TO_DATE('01-01-' || TO_CHAR(SYSDATE,'YYYY'),'MM-DD-YYYY')) 

    WHEN <Parameters.Timeframe> = 'QTD' and TO_CHAR(SYSDATE,'Q') = 2 
    THEN TO_CHAR(TO_DATE('04-01-' || TO_CHAR(SYSDATE,'YYYY'),'MM-DD-YYYY')) 

    WHEN <Parameters.Timeframe> = 'QTD' and TO_CHAR(SYSDATE,'Q') = 3 
    THEN TO_CHAR(TO_DATE('07-01-' || TO_CHAR(SYSDATE,'YYYY'),'MM-DD-YYYY')) 

    WHEN <Parameters.Timeframe> = 'QTD' and TO_CHAR(SYSDATE,'Q') = 4 
    THEN TO_CHAR(TO_DATE('10-01-' || TO_CHAR(SYSDATE,'YYYY'),'MM-DD-YYYY')) 

    ELSE 
    TO_CHAR(SYSDATE) 
    END as DATE_RANGE_START 

    FROM table a 

where 
    a.created_date >= CASE 
    WHEN <Parameters.Timeframe> = 'YTD' 
    THEN to_date('01-JAN-' || to_char(sysdate, 'YYYY'), 'dd-mon-yyyy') 

    WHEN <Parameters.Timeframe> = 'MTD' 
    THEN TO_DATE('01-' || TO_CHAR(SYSDATE,'MON-YYYY'),'DD-MON-YYYY') 

    WHEN <Parameters.Timeframe> = 'QTD' and TO_CHAR(SYSDATE,'Q') = 1 
    THEN TO_DATE('01-01-' || TO_CHAR(SYSDATE,'YYYY'),'MM-DD-YYYY') 

    WHEN <Parameters.Timeframe> = 'QTD' and TO_CHAR(SYSDATE,'Q') = 2 
    THEN TO_DATE('04-01-' || TO_CHAR(SYSDATE,'YYYY'),'MM-DD-YYYY') 

    WHEN <Parameters.Timeframe> = 'QTD' and TO_CHAR(SYSDATE,'Q') = 3 
    THEN TO_DATE('07-01-' || TO_CHAR(SYSDATE,'YYYY'),'MM-DD-YYYY') 

    WHEN <Parameters.Timeframe> = 'QTD' and TO_CHAR(SYSDATE,'Q') = 4 
    THEN TO_DATE('10-01-' || TO_CHAR(SYSDATE,'YYYY'),'MM-DD-YYYY') 

    ELSE 
    SYSDATE 
     END 

and a.created_date <= sysdate 

我應該如何修復它

+0

這是不是讓你在那裏的失敗行號的WHERE和HAVING子句? – Ageonix

+0

請發佈完整的錯誤堆棧 – MaxU

+0

查找並閱讀日誌。它會向您顯示Tableau嘗試運行的確切查詢。 Tableau傳遞給查詢的參數值始終可能不是正確的格式,等等。 – Nicarus

回答

0

爲獲得最大價值的Tableau的一般建議 - 避免輸入SQL到的Tableau。這適用於數據連接中的自定義SQL或在計算字段中調用RAW SQL函數。

這並不意味着這些功能沒有有效和重要的用途,但它們相對較少。大多數情況下,這是一個跡象表明某人正在恢復爲手動編碼的SQL,因爲他們已經瞭解它,而不是花時間學習Tableau。這種方法通常不會導致最佳結果。

相反,如果你發現對應於你正在努力實現這一概念的Tableau功能,您通常會完成更多的靈活性和效率相同的結果。簡而言之,讓Tableau負責爲您的查詢生成特定的SQL,除非您沒有其他選擇。

Tableau對過濾,截斷,格式設置和圖表日期值的不同方式提供各種支持。

儘量只連接到您的表格中的直接,置CREATE_DATE過濾貨架上,並呈現出快速的過濾器,可以很容易地調整過濾條件。根據您將create_date作爲濾波器架上的連續字段還是離散字段來處理,您將得到不同類型的選擇。根據是否選擇將create_date截斷爲日,月,季或年,您將始終得到不同的結果。

在你的情況,我會嘗試過濾貨架上治療CREATE_DATE連續(綠色)確切日期(不截斷),然後使用一個開始日期,範圍或期間快速過濾器。您可以通過單擊過濾器右上角的黑色三角形來調整快速過濾器類型。

如果沒有內置過濾器滿足您的需求,您可以定義一個布爾值計算的字段引用您的參數,並確定日期是否應包含,然後把該字段的過濾器架子上。

你把什麼過濾器上的架子影響生成的SQL