如何在这个小提琴示例中从col2求和我的值?
我在创建表格时无法更改列的格式,因为正如您在示例中看到的那样,它也包含日期。
我的目标是得到总和的值为-5.646,20
谢谢你现在的所有工作
现在我的下一个问题也是:D如何将第二个查询绑定到第一个查询?我想将它用于合并列。
SELECT col1, COALESCE(col32,col31,col30,col29,col28,col27,col26,col25,col24,col23,col22,col21,col20,col19,col18,col17,col16,col15,col14,col13,col2,col11
,col10,col9,col8,col7,col6,col5,col4,col3,col2) AS Summen from dbo.t2
WHERE LEFT(col1,4) = '1050'
SELECT SUM(convert(decimal(12,2),Replace(Replace(col28, '.' , '') , ',' , '.') ) )
FROM dbo.t2
WHERE LEFT(col1,4) = '1050'
答案 0 :(得分:1)
从your previous question的答案中获取灵感:
SELECT SUM(convert(decimal(12,2),Replace(Replace(col2, '.' , '') , ',' , '.') ) )
FROM test
WHERE col1 NOT IN ('Datum')
嵌套的Replace
函数用于更改数字格式的方式。 SQL使用','作为千位分隔符和'。'作为小数点分隔符,我们更改格式以使数据显示为SQL的数字。
答案 1 :(得分:0)
令人讨厌。您可以转换值:
select sum(case when isnumeric(replace(replace(col2, '.', ''), ',', '.'))) = 0
then cast(replace(replace(col2, '.', ''), ',', '.')) as decimal(20, 8))
end)
如果您使用的是SQL Server 2012+,请改用try_convert()
:
select try_convert(decimal(20, 8), replace(replace(col2, '.', ''), ',', '.')) )
我建议将值保留为数字。如果您想拥有数千个分隔符,则可以将其转换为money
数据类型。但是,确切的格式(例如,逗号或句点是否用作小数点分隔符)取决于您的国际化设置。
答案 2 :(得分:0)
您可以CONVERT
到MONEY
数据类型:
SELECT SUM(CAST(col2 AS MONEY)) FROM test
WHERE col1 NOT IN ('Datum')