sql中的Money(数据类型)之和

时间:2012-02-01 21:51:13

标签: sql-server-2005

如何获取SQL Server 2005中money数据类型列的总和?

我收到错误

  

操作数数据类型nvarchar对sum运算符无效。

当我使用

sum(AmountSold) as Amount

提前致谢!

完整查询是这样的:不在此处添加组,因为它列出了超过15列。

SELECT *,
       COUNT(RepDailyCollection.CommunityID)             AS DaysinTown,
       SUM(CAST(RepDailyCollection.AmountSold AS MONEY)) AS TownValue,
       SUM(RepDailyCollection.Spots)                     AS Spots,
       SUM(RepDailyCollection.AmountCollected)           AS Collected,
       CommuniTee.StartDate                              AS StartDate,
       Community.EndDate                                 AS EndDate,
       Community.IsClosed                                AS TownStatus
FROM   Community
       INNER JOIN RepDailyCollection
         ON RepDailyCollection.CommunityID = Community.CommunityID
WHERE  Community.RepID = @RepID  

另外,使用Create table query

进行编辑
CREATE TABLE [dbo].[RepDailyCollection](
[RepDailyCollectionID] [bigint] IDENTITY(7500,1) NOT NULL,
[RepDailyInfoID] [bigint] NOT NULL,
[CommuniTeeID] [int] NULL,
[AmountSold] [money] NULL,
[AmountCollected] [money] NULL,
[Spots] [nvarchar](50) COLLATE Latin1_General_CI_AI NULL,
[IsCleared] [bit] NOT NULL,
[PaymentMethod] [nvarchar](50) COLLATE Latin1_General_CI_AI NULL,
[CheckNumber] [bigint] NULL,
[Invoice] [nvarchar](50) COLLATE Latin1_General_CI_AI NULL,
[TypeofCreditCard] [nvarchar](30) COLLATE Latin1_General_CI_AI NULL,
[OrderID] [int] NULL,
[NewCompanyName] [nvarchar](100) COLLATE Latin1_General_CI_AI NULL,
[PaymentDate] [datetime] NULL
) ON [PRIMARY]

1 个答案:

答案 0 :(得分:3)

如果您使用nvarchar作为数据类型,则无法使用聚合函数SUM()。该错误指出AmountSold列的数据类型为nvarchar,而不是money

如果您的AmountSold列确实以nvarchar的形式创建数字数据,则可以执行以下操作:

sum(cast(AmountSold as money))

编辑:查看CREATE TABLE命令后,问题是Spots属于nvarchar数据类型,而您正试图调用{{1}在sum()上。这就是你收到错误的原因。

如果Spots确实创建了数字数据,那么您需要执行以下操作:

Spots