2017-11-20 2 views
0

ist Ich habe eine Tabelle unten. Ich brauche, wenn Indikator = 0 dann Datum = NullWenn Spalte gleich

Ich habe versucht, eine Case-Anweisung, sondern erhalten Fehler. Jede Hilfe wäre willkommen.

 Select 
     Case when a.indicator = 0 
      Then a.date = 0 
      Else a.date 
       End Date 

     From TableA a 

TableA

Id   Date  Indicator 
    1   1/1/17  0 
+1

einige Beispieltabellendaten hinzufügen und das erwartete Ergebnis. (Als formatierter Text, keine Bilder.) – jarlh

Antwort

0

Was Sie wollen, ist:

SELECT CASE WHEN a.indicator = 0 THEN NULL ELSE a.date END AS 'Date' FROM TableA AS a

Der Grund a.date = 0 (oder) ist falsch, dass Sie a.date keinen neuen Wert zuweisen, sondern angeben, welcher Wert (null) aus dem case-Ausdruck zurückgegeben werden soll, wenn es wahr ist.

0
select 
    decode(a.indicator, 0, null, a.date) date 
from 
    tableA 
+0

Decode ist nicht ansi, besser zu verwenden –

+0

[Verwenden Sie nicht DECODE() '] (https://Stackoverflow.com/a/13716116/458741) es ist nicht ANSII Standard und es gibt ein paar Probleme. Es ist am besten, CASE zu bevorzugen – Ben

0

verwenden wählen:

SELECT 
CASE 
    WHEN A.INDICATOR = 0 THEN 
    NULL 
    ELSE A.DATE 
END DATE 
FROM TABLEA A 
0

Sie können diese verwenden:

Select "Id", 
    Case 
     when "Indicator" <> 0 
      Then "Date" End AS Date1, 
    "Indicator" 
From TableA; 

Bitte beachten Ich habe Ihre Logik umgekehrt und übersprang die else null weil diese ohnehin Standard, wenn nicht verwendet.

Mehr über Fall: http://modern-sql.com/feature/case

SQL HERE

0
Select 
    Case a.indicator when 0 
     Then null 
      Else a.date 
      End 
From TableA a 
Verwandte Themen