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) )