在金钱列上求和 returns 0
Sum returns 0 on a money column
当我运行这个查询时:
SELECT [id],[amount],sum(amount) as Total
FROM transaction
where id='035'
group by id, amount
我得到了一些结果,例如
id amount Total
035 -55115.24 -55115.24
035 -2126.14 -2126.14
然而,当我尝试获取总计(对于 amount
列)时,使用此查询;
select id, count(*) as howMany, sum(amount) as Total
from transaction
where id='035'
group by id
order by count(*) desc
我得到了这些结果。
id howMany Total
035 2 0.00
我希望得到
id howMany Total
035 2 -057241.38
我试图简化查询,没有计数,只是为了检查总和是否有效
select id, sum(amount) as Total
from transaction
where id='035'
group by id
但是我的总数又是 0
id Total
035 0.00
我也在数量列中具有正值但得到相同行为的 ID 上尝试过此操作。
为了澄清,我想要 amount
列中每个 id
的总值,在整个 table 中,不仅仅是每一行,但我只得到在 SQL.
中使用 SUM
函数时为零
我注意到的另一件事是,id
列是 nvarchar
,而不是 table 的 ID/key。这是一个旧的数据库,出于某种原因,它更喜欢将 nvarchars 链接到主键上。我无法更改 table 结构。
架构
CREATE TABLE [dbo].[transaction](
[trindex] [int] IDENTITY(1,1) NOT NULL,
[id] [varchar](15) NULL,
[date] [datetime] NULL,
[amount] [money] NULL,
[acct] [varchar](20) NULL
)
尝试在求和之前转换为数字:select id, SUM(amount), SUM(convert(numeric(18,2), amount))
当我运行这个查询时:
SELECT [id],[amount],sum(amount) as Total
FROM transaction
where id='035'
group by id, amount
我得到了一些结果,例如
id amount Total
035 -55115.24 -55115.24
035 -2126.14 -2126.14
然而,当我尝试获取总计(对于 amount
列)时,使用此查询;
select id, count(*) as howMany, sum(amount) as Total
from transaction
where id='035'
group by id
order by count(*) desc
我得到了这些结果。
id howMany Total
035 2 0.00
我希望得到
id howMany Total
035 2 -057241.38
我试图简化查询,没有计数,只是为了检查总和是否有效
select id, sum(amount) as Total
from transaction
where id='035'
group by id
但是我的总数又是 0
id Total
035 0.00
我也在数量列中具有正值但得到相同行为的 ID 上尝试过此操作。
为了澄清,我想要 amount
列中每个 id
的总值,在整个 table 中,不仅仅是每一行,但我只得到在 SQL.
SUM
函数时为零
我注意到的另一件事是,id
列是 nvarchar
,而不是 table 的 ID/key。这是一个旧的数据库,出于某种原因,它更喜欢将 nvarchars 链接到主键上。我无法更改 table 结构。
架构
CREATE TABLE [dbo].[transaction](
[trindex] [int] IDENTITY(1,1) NOT NULL,
[id] [varchar](15) NULL,
[date] [datetime] NULL,
[amount] [money] NULL,
[acct] [varchar](20) NULL
)
尝试在求和之前转换为数字:select id, SUM(amount), SUM(convert(numeric(18,2), amount))