?
Solved

sql cast syntax

Posted on 2010-11-23
4
Medium Priority
?
1,184 Views
Last Modified: 2012-05-10
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

0
Comment
Question by:qbjgqbjg
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
4 Comments
 
LVL 75

Accepted Solution

by:
käµfm³d   👽 earned 1000 total points
ID: 34199997
Change line 54 to:
CAST(YEAR(PA30100.PAPD) + 1  AS varCHAR(4))

Open in new window

0
 
LVL 58

Expert Comment

by:cyberkiwi
ID: 34199999
the syntax for CAST is

CAST( {expr} AS {type} )

not

CAST( {expr} )  AS {type}
0
 
LVL 32

Assisted Solution

by:Erick37
Erick37 earned 1000 total points
ID: 34200002
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
 

Author Closing Comment

by:qbjgqbjg
ID: 34200106
Thanks. I appreciate it.
0

Featured Post

Enroll in August's Course of the Month

August's CompTIA IT Fundamentals course includes 19 hours of basic computer principle modules and prepares you for the certification exam. It's free for Premium Members, Team Accounts, and Qualified Experts!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you have heard of RFC822 date formats, they can be quite a challenge in SQL Server. RFC822 is an Internet standard format for email message headers, including all dates within those headers. The RFC822 protocols are available in detail at:   ht…
Occasionally there is a need to clean table columns, especially if you have inherited legacy data. There are obviously many ways to accomplish that, including elaborate UPDATE queries with anywhere from one to numerous REPLACE functions (even within…
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased…
Have you created a query with information for a calendar? ... and then, abra-cadabra, the calendar is done?! I am going to show you how to make that happen. Visualize your data!  ... really see it To use the code to create a calendar from a q…

764 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question