sql cast syntax

I am getting an error I have not been able to figure out.
Server: Msg 1035, Level 15, State 10, Line 54
Incorrect syntax near 'CAST', expected 'AS'.

DECLARE @Today DATETIME
SET @Today = GETDATE()
DECLARE @fiscalYr  NUMERIC
SET @fiscalYr = 
  case
    when MONTH(@Today) >= 11 then Year(@Today) + 1 
    else  Year(@Today)
  end
DECLARE @period  NUMERIC
SET @period = 
  case
    when MONTH(@Today) >= 11 then MONTH(@Today) - 10
    else  Month(@Today)+ 2
end  
DECLARE @FYR varchar
SET @FYR = cast(@fiscalYr as varchar(4))

DECLARE @PER varchar
SET @PER = cast(@period as varchar(2))

insert into dbo.EDCOGMATUS
select
DOCSRC,  
REFNO,   
DOCDESC, 
DOCGRP,  
FSCYR,   
DOCDATE, 
DOCPER,  
AUTOREV, 
SUMM,    
ACCTTYP, 
ACCTNO,  
DETDESC,
SUM(TRAN_AMOUNT) AS AMOUNT,
DBCR,     
SUMMACCT, 
JCGRTYP,  
PANO,     
LFCHAR   
FROM
(
 SELECT 
 'je_import ' as DOCSRC,
 Substring(PA30101.PAPROJNUMBER + space(9), 1, 9)  as REFNO,
 substring('Cogsdale Labor Usage' + 
           space(40), 1,40) as DOCDESC,
 'COGLABUSED' as DOCGRP,
  /* --------fiscal year case begin---------------- */
 case
 when month(PA30100.PAPD) >= '10'
 
 then 
   CAST(YEAR(PA30100.PAPD) + 1)  AS varCHAR(4)
 
  else  
   CAST(YEAR(PA30100.PAPD))  AS varCHAR(4)
 end  as FSCYR,
/* ------------------case end---------------- */
 
 Right('0' + CAST(MONTH(@Today) AS varCHAR(2)),2) + 
       Right('0' + CAST(DAY(@Today) AS varCHAR(2)),2) + 
                CAST(YEAR(@Today) AS varCHAR(4)) as DOCDATE,
 /* --------fiscal period case begin---------------- */
 case
 when month(PA30100.PAPD) >= '10'
 
 then 
   CASTmonth(PA30100.PAPD) - 9  AS varCHAR(2)
 
  else  
   CASTmonth(PA30100.PAPD) + 3  AS varCHAR(2)
 end  as DOCPER,
/* ------------------case end---------------- */               
 'N' as AUTOREV,
 'Y' as SUMM,
 'B' as ACCTTYP,
 '457-381-33200' as ACCTNO,
 substring(GL00100.ACTALIAS + space(30), 1, 30) as DETDESC,
 PA30103.DEBITAMT - PA30103.CRDTAMT AS TRAN_AMOUNT,
 'C' as DBCR,
 ' ' as SUMMACCT,
 ' ' as JCGRTYP,
 space(32) as PANO,
 'Ž' as LFCHAR
 
 
 FROM  
  PA30101 PA30101
  LEFT OUTER JOIN PA30100 PA30100 
  ON PA30101.PATSNO=PA30100.PATSNO 
  AND PA30101.EMPLOYID=PA30100.EMPLOYID 
  LEFT JOIN PA01201 PA01201 
  ON PA30101.PAPROJNUMBER=PA01201.PAPROJNUMBER 
  LEFT OUTER JOIN PA30103 PA30103 
  ON PA30101.PATSNO=PA30103.PATSNO 
  INNER JOIN GL00100 GL00100 
  ON PA30103.DSTINDX=GL00100.ACTINDX

 
 WHERE  GL00100.ACTALIAS LIKE '33%' 
  AND FISCYR=@FYR
  AND DOCPER = @PER
) x
GROUP BY
DOCSRC,  
REFNO,   
DOCDESC, 
DOCGRP,  
FSCYR,   
DOCDATE, 
DOCPER,  
AUTOREV, 
SUMM,    
ACCTTYP, 
ACCTNO,  
DETDESC, 
DBCR,     
SUMMACCT, 
JCGRTYP,  
PANO,     
LFCHAR

Open in new window

qbjgqbjgConsultantAsked:
Who is Participating?
 
käµfm³d 👽Commented:
Change line 54 to:
CAST(YEAR(PA30100.PAPD) + 1  AS varCHAR(4))

Open in new window

0
 
cyberkiwiCommented:
the syntax for CAST is

CAST( {expr} AS {type} )

not

CAST( {expr} )  AS {type}
0
 
Erick37Commented:
Looks like the ( ) are missing in this

 /* --------fiscal period case begin---------------- */
 case
 when month(PA30100.PAPD) >= '10'
 
 then
   CASTmonth(PA30100.PAPD) - 9  AS varCHAR(2)
 
  else  
   CASTmonth(PA30100.PAPD) + 3  AS varCHAR(2)
 end  as DOCPER,
/* ------------------case end---------------- */              



It should be:
then
CAST(month(PA30100.PAPD) - 9  AS varCHAR(2))
else  
CAST(month(PA30100.PAPD) + 3  AS varCHAR(2))




0
 
qbjgqbjgConsultantAuthor Commented:
Thanks. I appreciate it.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.