IF MonthNumberOfYear BETWEEN 1 and 9 THEN '0' + CAST(MonthNumberOfYear AS char(1)) AS CorrectMonthNumber ELSE CAST(MonthNumberOfYear AS char(2) AS CorrectMonthNumber END , CalendarQuarter, 'Q' + CAST(CalendarQuarter AS char(1)) AS QCalenderQuarter, CalendarYear, CalendarSemester, FiscalQuarter, FiscalYear, FiscalSemester FROM dbo.DimDate
Hvor det så er det mellem IF og END der er ikke virker. Hvad gør jeg forkert?
Den CASE ser rigtig ud *men* jeg er noget i tvivl om data type for MonthNumberOfYear - jeg ville have troet at den var TINYINT og at du vill caste den til VARCHAR, men du caster faktisk til TINYINT.
Tak for svarene. MonthNumberOfYear er som standard TINYINT. Jeg har prøvet at caste den til char og varchar, men kan stadig ikke få den til at smide '0' foran de encifrede måneder.
Har det noget at gøre med at SQL ikke kan regne med TINYINT, og jeg derfor skal konvertere til NUMBER før den kan læse BETWEEN?
1> CREATE TABLE casetest(v TINYINT NOT NULL PRIMARY KEY) 2> GO 1> 2> INSERT INTO casetest VALUES(1) 3> GO (1 row affected) 1> INSERT INTO casetest VALUES(2) 2> GO (1 row affected) 1> INSERT INTO casetest VALUES(10) 2> GO (1 row affected) 1> INSERT INTO casetest VALUES(11) 2> GO (1 row affected) 1> 2> SELECT CASE WHEN v BETWEEN 1 AND 9 THEN '0' + CAST(v AS VARCHAR(2)) ELSE CAST(v AS VARCHAR(2)) END AS v2 FROM casetest 3> GO v2 ---- 01 02 10 11
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.