我的列价格数据类型是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 ......
答案 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
以逗号分隔存储不是一个好主意,将其存储为小数。 如果您存储用于显示目的的逗号,则在显示时添加它。