2017-03-23 27 views
-1

我需要幫助搞清楚如何定義conndition只在特定的值取決於從列的Oracle SQL條件時,

WHERE ((CUSTOMFIELDVALUE.STRINGVALUE=TO_CHAR(CUSTOMFIELDOPTION.ID)) {?} (CUSTOMFIELD.CFNAME='Type of workload') AND CUSTOMFIELDOPTION.CUSTOMVALUE='Performed') 

條件(CUSTOMFIELDVALUE.STRINGVALUE=TO_CHAR(CUSTOMFIELDOPTION.ID))CUSTOMFIELD.CFNAME(CUSTOMFIELD.CFNAME='Type of workload')

感謝您應該只適用提前。

+1

(1)用你正在使用的數據庫標記你的問題。 (2)提供樣本數據和期望的結果。 –

回答

1

據我理解你的問題:

WHERE (CUSTOMFIELDVALUE.STRINGVALUE = TO_CHAR(CUSTOMFIELDOPTION.ID) 
     AND CUSTOMFIELD.CFNAME = 'Type of workload' 
     AND CUSTOMFIELDOPTION.CUSTOMVALUE = 'Performed') 
     OR 
     ((CUSTOMFIELD.CFNAME IS NULL OR CUSTOMFIELD.CFNAME <> 'Type of workload') 
     AND CUSTOMFIELDOPTION.CUSTOMVALUE = 'Performed') 

這可以被改寫:

WHERE CUSTOMFIELDOPTION.CUSTOMVALUE = 'Performed' 
     AND ((CUSTOMFIELDVALUE.STRINGVALUE = TO_CHAR(CUSTOMFIELDOPTION.ID) 
      AND CUSTOMFIELD.CFNAME = 'Type of workload' 
      ) 
      OR 
      ((CUSTOMFIELD.CFNAME IS NULL OR CUSTOMFIELD.CFNAME <> 'Type of workload')) 
+0

對不起,延遲迴復,並感謝您的建議。你重寫的查詢非常接近我所需要的,但最後我沒有正確的結果。 –

+0

我可以爲您提供完整的查詢,我的最終目標是什麼。 –

+0

試着用清晰的方式解釋它,並帶有示例數據(在創建表和插入示例數據後)和期望的結果請 – etsa

0

我會使用UNION運算符與2個不同的查詢

SELECT * FROM TABLE WHERE CUSTOMFIELD.CFNAME='Type of workload' AND CUSTOMFIELDVALUE.STRINGVALUE=TO_CHAR(CUSTOMFIELDOPTION.ID) AND AND CUSTOMFIELDOPTION.CUSTOMVALUE='Performed' 
UNION 
SELECT * FROM TABLE WHERE CUSTOMFIELD.CFNAME<>'Type of workload' AND CUSTOMFIELDOPTION.CUSTOMVALUE='Performed' 

希望這幫助

0

這是完整的查詢,目標是在執行工作負載類型和接受解決方案(RESOLUTION = 8)時,爲特定問題提供所有可用字段的列表。

存在的問題是,其僅具有用於

條件CUSTOMVALUE = '' 進行用於CUSTOMFIELD.CFNAME = '工作量的類型' 將要使用的條件:

AND (CUSTOMFIELDVALUE.STRINGVALUE=TO_CHAR(CUSTOMFIELDOPTION.ID) AND CUSTOMFIELDOPTION.CUSTOMVALUE='Performed') 

整個查詢:

SELECT DISTINCT 
    JIRAISSUE.ISSUENUM, 
    JIRAISSUE.SUMMARY, 
    PROJECT.PNAME, 
    CUSTOMFIELD.CFNAME, 
    CUSTOMFIELDVALUE.STRINGVALUE, 
    CUSTOMFIELDVALUE.ID, 
    CUSTOMFIELDVALUE.NUMBERVALUE, 
    CUSTOMFIELDOPTION.CUSTOMVALUE, 
    ISSUETYPE.PNAME 
FROM 
    JIRAISSUE, 
    PROJECT, 
    CUSTOMFIELDVALUE, 
    CUSTOMFIELD, 
    CUSTOMFIELDOPTION, 
    ISSUETYPE 
WHERE (CUSTOMFIELDVALUE.ISSUE=JIRAISSUE.ID) 
    AND (CUSTOMFIELDVALUE.CUSTOMFIELD=CUSTOMFIELD.ID) 
    AND (CUSTOMFIELD.ID=CUSTOMFIELDOPTION.CUSTOMFIELD) 
    AND (CUSTOMFIELDOPTION.CUSTOMFIELD=CUSTOMFIELDVALUE.CUSTOMFIELD) 
    AND (JIRAISSUE.ISSUETYPE=ISSUETYPE.ID ) 
    AND (PROJECT.ID=JIRAISSUE.PROJECT ) 
    AND CUSTOMFIELD.CFNAME IN ('Type of workload', 'ANA-PROG extramuros','ANA-PROG intramuros','TEC-CONS extramuros','TEC-CONS intramuros','PRO-MAN extramuros','PRO-MAN intramuros' ) 
    AND PROJECT.PNAME IN ('eNotices', 'TED Applications', 'TED Web Services', 'TED-Monitor-2012', 'eTendering' ) 
    AND (CUSTOMFIELDVALUE.STRINGVALUE=TO_CHAR(CUSTOMFIELDOPTION.ID) AND CUSTOMFIELDOPTION.CUSTOMVALUE='Performed') 
    AND JIRAISSUE.RESOLUTION=8 
ORDER by issuenum;