各位大虾,小弟是变成新手,现在遇到一个问题,小弟有一个SQL数据库的表
number money date  
1 10 2010-01-01
2 20 2010-05-01
3 100 2011-05-07
4 500 2011-05-08
5 50 2011-08-04
6 100 2010-09-04
小弟需要按照年份统计money的总额,但是money的类型是nvarchar, date的类型是smalldatetime请问一下,这一块如果想在编程语言中实现的话要怎么转换,比如我现在需要得到一个2010年的money的总额,这一块的语句该怎么写?我现在没有办法在数据库语句中直接将nvarchar类型的money值转换成数值型进行相加,错误提示如下,请各位大虾给点指点,谢谢~!
操作数数据类型 nvarchar 对于 sum 运算符无效。

解决方案 »

  1.   

    use tempdbgo
    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tempTable]') AND type in (N'U'))
    DROP TABLE [dbo].[tempTable]
    goCREATE TABLE tempTable
    (   [Number] INT,
        [Money] VARCHAR(10),
        [Date] SMALLDATETIME
    )INSERT INTO tempTable(
    [Number], [Money], [Date])
    VALUES    
    (1, 10, '2010-01-01'),
    (2, 20, '2010-05-01'),
    (3, 100, '2011-05-07'),
    (4, 500, '2011-05-08'),
    (5, 50, '2011-08-04'),
    (6, 100, '2010-09-04')
    SELECT DATEPART(Year,[Date]) [Year], SUM(CAST([Money] AS DECIMAL)) [SumMoney] 
    FROM tempTable
    GROUP  BY DATEPART(Year,[Date])