Сумма денег (тип данных) в sql - PullRequest
0 голосов
/ 02 февраля 2012

Как получить сумму столбца типа данных money в SQL Server 2005?

Я получаю ошибку

Тип данных операнда nvarchar недопустим для оператора суммы.

когда я использую

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 [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 Ответ

3 голосов
/ 02 февраля 2012

Если вы используете nvarchar в качестве типа данных, вы не можете использовать функцию агрегирования SUM(). В сообщении об ошибке указывается, что тип вашего столбца AmountSold равен nvarchar, а не money.

Если ваш столбец AmountSold создает числовые данные в виде nvarchar, вы можете сделать это:

sum(cast(AmountSold as money))

РЕДАКТИРОВАТЬ : После просмотра команды CREATE TABLE ваша проблема в том, что Spots имеет тип данных nvarchar, и вы пытаетесь вызвать sum() для Spots. Вот почему вы получаете ошибку.

Если Spots создает числовые данные, вам нужно сделать:

sum(cast(Spots as int))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...