2017-03-23 5 views
-1

Ich brauche Hilfe, um herauszufinden, wie das conndition zu definieren, hängt nur von bestimmtem Wert aus der SpalteOracle SQL Zustand nur, wenn

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

Zustand (CUSTOMFIELDVALUE.STRINGVALUE=TO_CHAR(CUSTOMFIELDOPTION.ID)) sollte nur angewandt werden, wenn CUSTOMFIELD.CFNAME ist (CUSTOMFIELD.CFNAME='Type of workload')

Danke im Voraus.

+1

(1) Beschriften Sie Ihre Frage mit der von Ihnen verwendeten Datenbank. (2) Geben Sie Beispieldaten und gewünschte Ergebnisse an. –

Antwort

1

Soweit ich Ihre Frage verstanden:

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') 

Die neu beschrieben werden kann:

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

Entschuldigung für die späte Antwort und danke für Ihren Vorschlag. Ihre umgeschriebene Abfrage ist sehr nah an dem, was ich brauche, aber am Ende habe ich kein korrektes Ergebnis. –

+0

Ich kann Ihnen eine vollständige Abfrage und was ist mein endgültiges Ziel. –

+0

Versuchen Sie, es klar und mit Beispieldaten (nach CREATE TABLE und INSERT mit Beispieldaten) und gewünschten Ergebnis bitte zu erklären – etsa

0

ich mit 2 verschiedenen Anfragen

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' 

Hoffnung den UNION-Operator verwenden würde diese hilft

0

Dies ist die gesamte Abfrage und das Ziel besteht darin, eine Liste aller verfügbaren Felder für ein bestimmtes Problem zu erhalten, wenn Art der Auslastung ausgeführt und die Auflösung akzeptiert wird (AUFLÖSUNG = 8).

Das Problem ist die Bedingung, die nur für CUSTOMVALUE = 'Performed' für CUSTOMFIELD.CFNAME = 'Art der Arbeitsbelastung'

Zustand verwendet werden muss:

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

Entire query:

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; 
Verwandte Themen