如何从数据库中选择转换和求和?

时间:2018-05-06 02:51:55

标签: sql crystal-reports

我的列价格数据类型是nvarchar,因为我用逗号(如1,000,000.00)保存了千位分隔符。我现在需要选择转换并在select语句中对其求和,然后在 crystalreport 中按ID显示分组。

我的选择陈述:

select id,productname,type,price,datesell,seller from tb_billdetail group by id

在这里,我需要如何将价格从nvarchar转换为double类型并在转换后将其求和,但只使用select语句?

我需要在水晶报告中显示的内容如下:

col_id     col_name     col_type     col_price     col_date 

**001**


001        fish         food          20,000.00    01/02/2018     
001        fish         food          10,000.00    10/02/2018

col_sum id 001:30,000.00

下一组ID 002和003 ......

1 个答案:

答案 0 :(得分:0)

Declare @tt table (name nvarchar(10), value nvarchar(10))
insert into @tt (name, value) values ('a', '1,000')
insert into @tt (name, value) values ('a', '1,10,000')
insert into @tt (name, value) values ('b', '2,000.4223')
insert into @tt (name, value) values ('b', '4,000.2')

select name, sum(cast(REPLACE(value,',','') as float)) as sum from @tt group by name

以逗号分隔存储不是一个好主意,将其存储为小数。 如果您存储用于显示目的的逗号,则在显示时添加它。