sql有转换字符串为数值的函数,先调用那个,再sum
/*
Navicat Premium Data Transfer
Source Server : LocalDB
Source Server Type : SQL Server
Source Server Version : 13004001
Source Host : (LocalDB)\MSSQLLocalDB:1433
Source Catalog : BookStore
Source Schema : dbo
Target Server Type : SQL Server
Target Server Version : 13004001
File Encoding : 65001
Date: 06/12/2019 14:21:12
*/
-- ----------------------------
-- Table structure for test
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[test]') AND type IN ('U'))
DROP TABLE [dbo].[test]
GO
CREATE TABLE [dbo].[test] (
[Id] int NOT NULL,
[TextVal] varchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
)
GO
-- ----------------------------
-- Records of test
-- ----------------------------
INSERT INTO [dbo].[test] VALUES (N'1', N'1')
GO
INSERT INTO [dbo].[test] VALUES (N'2', N'1.1')
GO
INSERT INTO [dbo].[test] VALUES (N'3', NULL)
GO
INSERT INTO [dbo].[test] VALUES (N'4', N'1.33')
GO
SELECT sum(case when t.TextVal= '' then 0 else CAST ( t.TextVal AS NUMERIC(10,2) ) end )
from test t
把你的sum(ZJM)更换为sum(case when ZJM= '' then 0 else CAST ( ZJM AS NUMERIC(10,2) )
这个如果是变量的话可以操作,但如果是制字符串的话这样肯定不能的。建议将ZJE是什么也截一下图
我换个问法,就是compute如何对datatable的string类型列用sum求和
@CodePanda: 如果这个值是小数或者整数 你可以先int.Parse或者double.Parse转换一下进行转换然后求和 但如果你从datatable里面的值是一个字符串。是不可行的
你先把代码拆开,就明白问题了~