Sql 如何对同一列中的值求和,以'|';?
我有一个表,在一列中,它的值用|分隔,我需要求和这些值,才能知道总值。例5 | 4 | 3=12。我想如果我用|代替a+符号,那应该行得通。但它不起作用 下面是我创建表的代码,以及我用来求和的值Sql 如何对同一列中的值求和,以'|';?,sql,sql-server,sum,Sql,Sql Server,Sum,我有一个表,在一列中,它的值用|分隔,我需要求和这些值,才能知道总值。例5 | 4 | 3=12。我想如果我用|代替a+符号,那应该行得通。但它不起作用 下面是我创建表的代码,以及我用来求和的值 CREATE TABLE [dbo].[test_table]( [totals] [varchar](255) NULL ) ON [PRIMARY] GO --******************* INSERT INTO [dbo].[test_table] ([to
CREATE TABLE [dbo].[test_table](
[totals] [varchar](255) NULL
) ON [PRIMARY]
GO
--*******************
INSERT INTO [dbo].[test_table]
([totals])
-- VALUES
(
select ('1|5|13')
union
select ('1|5|13')
union
select ('0|0|2')
union
select ('1|1|7')
union
select ('1|1|13')
union
select ('1|1|13')
union
select ('0|0|3')
union
select ('0|0|1')
union
select ('0|0|4')
union
select ('1|1|9'))
GO
select
tot
--sum(tot) as total
--CONVERT(numeric, tot)
from
(
select totals,
replace(totals,'|','+') as tot
from test_table
) qry
SQL Server不支持宏替换,如果具有
EVAL()
,也不支持宏替换。如果您不想使用动态SQL,并且您的需求是一个简单的聚合,请考虑<代码>交叉应用与<代码> StrugSPLITE()/<代码>
示例
Select *
From [test_table] A
Cross Apply (
Select SumTotal = sum(try_convert(int,value))
from string_split(Totals,'|') B1
) B
返回
totals SumTotal
0|0|1 1
0|0|2 2
0|0|3 3
0|0|4 4
1|1|13 15
1|1|7 9
1|1|9 11
1|5|13 19
SQL Server不支持宏替换,如果具有
EVAL()
,也不支持宏替换。如果您不想使用动态SQL,并且您的需求是一个简单的聚合,请考虑<代码>交叉应用与<代码> StrugSPLITE()/<代码>
示例
Select *
From [test_table] A
Cross Apply (
Select SumTotal = sum(try_convert(int,value))
from string_split(Totals,'|') B1
) B
返回
totals SumTotal
0|0|1 1
0|0|2 2
0|0|3 3
0|0|4 4
1|1|13 15
1|1|7 9
1|1|9 11
1|5|13 19
SQL Server版本?请检查此链接,理想情况下,您应该在此处修复您的设计。这是否回答了您的问题?SQL Server版本?请检查此链接,理想情况下,您应该在此处修复您的设计。这是否回答了您的问题@i人们总是乐于帮助。@i人们总是乐于帮助。