2017-01-21 8 views
0

Kann mir hier jemand helfen?CASE-Funktion in SQL Server 2012 Fehlermeldung

Ich versuche, die als CASE Funktion zu verwenden unten bekam Fehlermeldung

Nachricht 156 falsche Syntax in der Nähe von Schlüsselwort ‚CASE‘.

Danke,

select distinct 
    FiscalYear 
    case 
     when FiscalYear = '2014' 
      then 'FY2014/2015' 
     when FiscalYear = '2015' 
      then 'FY2015/2016' 
     when FiscalYear = '2016' 
      then 'FY2016/2017' 
     else 'FY2017/2018' 
    end 
from 
    DimDate 
order by 
    FiscalYear 
+4

Komma fehlt 'wählen FiscalYear ..' –

Antwort

2

Es ist ein fehlendes Komma nach FiscalYear.

SELECT DISTINCT FiscalYear, --here 
       CASE 
        WHEN FiscalYear = '2014' THEN 'FY2014/2015' 
        WHEN FiscalYear = '2015' THEN 'FY2015/2016' 
        WHEN FiscalYear = '2016' THEN 'FY2016/2017' 
        ELSE 'FY2017/2018' 
       END 
FROM DimDate 
ORDER BY FiscalYear 

jedoch können wir Ihre Anfrage wie diese

SELECT DISTINCT FiscalYear, 
       CASE 
        WHEN FiscalYear IN ('2014', '2015', '2016') THEN Concat('FY', FiscalYear, '/', FiscalYear + 1) 
        ELSE 'FY2017/2018' 
       END 
FROM DimDate 
ORDER BY FiscalYear 
+0

Vielen Dank! werde es morgen versuchen :) – rosewang

0

ich für den Fall sehen keine Notwendigkeit, vereinfachen. Sie müssen die Logik für die folgenden Jahre bearbeiten.

Declare @YourTable table (FiscalYear varchar(10)) 
Insert Into @YourTable values 
('2014'), 
('2015'), 
('2016'), 
('2017') 

Select Distinct FiscalYear = concat('FY',FiscalYear,'/',1+FiscalYear) 
From @YourTable 

Returns

FiscalYear 
FY2014/2015 
FY2015/2016 
FY2016/2017 
FY2017/2018 
+0

Anders als 2014,2015 und 2016 OPs Abfrage wird '' FY2017/2018'' als Standard zurückgeben, aber es ist nicht der Fall in Ihrer Antwort. –

+0

@ Prdp Fair genug. Wundert mich, was sonst noch in OPs Bereich ist. FiscalYear –

+0

Vielen Dank für Ihre Antwort! – rosewang