2013-12-18 24 views
1

我有一个生成语法错误以下存储过程:存储过程语法错误附近“十进制(10,2)”

SELECT  
    tbl_ReceiptMaster.receiptMasterId AS ID, 
     date_format(tbl_ReceiptMaster.date,'%d %m %y') AS Date, 
    tbl_AccountLedger.acccountLedgerName AS 'Ledger ', 
    tbl_ReceiptMaster.receiptMode AS 'Receipt Mode', 
    tbl_ReceiptMaster.description AS Description, 
    cast(tbl_ReceiptDetails.amount as decimal(18,2))as amount 
FROM   tbl_ReceiptMaster 
INNER JOIN tbl_ReceiptDetails ON tbl_ReceiptMaster.receiptMasterId = tbl_ReceiptDetails.receiptMasterId 
INNER JOIN tbl_AccountLedger ON tbl_ReceiptDetails.ledgerId = tbl_AccountLedger.ledgerId 
order by cast (tbl_ReceiptMaster.receiptMasterId as decimal(10,2)) desc ; 

以下是错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use near 
'decimal(10,2)) desc' at line 11 

我怎么能修复这个错误?

回答

3

您可以通过子句中使用别名amount,而不是表达cast(tbl_ReceiptDetails.amount as decimal(18,2))为了尝试以下解决方案

SELECT tbl_ReceiptMaster.receiptMasterId AS ID, 
     date_format(tbl_ReceiptMaster.date,'%d %m %y') AS Date, 
     tbl_AccountLedger.acccountLedgerName AS 'Ledger ', 
     tbl_ReceiptMaster.receiptMode AS 'Receipt Mode', 
     tbl_ReceiptMaster.description AS Description, 
     cast(tbl_ReceiptDetails.amount as decimal(18,2))as amount 
FROM   tbl_ReceiptMaster 
INNER JOIN tbl_ReceiptDetails ON tbl_ReceiptMaster.receiptMasterId = tbl_ReceiptDetails.receiptMasterId 
INNER JOIN tbl_AccountLedger ON tbl_ReceiptDetails.ledgerId = tbl_AccountLedger.ledgerId 
order by amount desc ;