2017-03-20 98 views
0

此代碼在Microsoft Access中不起作用,但可用於Microsoft SQL Server Management Studio。我可以做什麼使這項工作在Access?我一直得到一個爲什麼此SQL代碼在Microsoft Access中不起作用,但在SQL Server Management Studio中起作用?

「查詢表達式CAST(od.UnitPrice * od.Quantity *(1 + od.Discount)中的語法錯誤(缺少運算符)爲小數點(10,2))'Order Total' 。

Select TOP 5 
    c.CompanyName as 'Company Name', 
    CAST(od.UnitPrice * od.Quantity * (1 + od.Discount) as decimal(10, 2)) 'Order Total' 
From 
    Customers as c 
Join 
    Orders as o On c.CustomerID = o.CustomerID 
Join 
    OrderDetails as od On o.OrderID = od.OrderID 
Where 
    od.UnitPrice * od.Quantity * (1 + od.Discount) > 5000 
    AND c.Country IN ('Austria', 'Denmark', 'Germany', 'Ireland', 'Sweden') 
Order By 
    o.OrderDate desc 
+0

這是錯誤嗎? – M84

+0

@gurV這是'cast'的錯誤。我不明白爲什麼。 –

回答

1

你不能使用CAST在Access ...嘗試與此選項:

目標類 - 轉換成整數

CLNG - 長

Cdbl - 雙

CSNG - 單

CSTR - 串

CBool​​將 - 布爾

CDEC - 十進制

例子:SELECT clng(fieldName) FROM tableName

你的情況:

Select TOP 5 
    c.CompanyName as 'Company Name', 
    CDec(od.UnitPrice * od.Quantity * (1 + od.Discount)) 'Order Total' 
From 
    Customers as c 
Join 
    Orders as o On c.CustomerID = o.CustomerID 
Join 
    OrderDetails as od On o.OrderID = od.OrderID 
Where 
    od.UnitPrice * od.Quantity * (1 + od.Discount) > 5000 
    AND c.Country IN ('Austria', 'Denmark', 'Germany', 'Ireland', 'Sweden') 
Order By 
    o.OrderDate desc 

希望這有助於!

+2

...並且不要忘記CDec轉換爲十進制,這是OP正在尋找的數據類型 – Joe

0

CAST和CONVERT列函數似乎無法在MS Access中使用。

嘗試CInt或CLng函數,具體取決於您想要一個整數(16位)還是一個長整數(32位)。

相關問題