Bil*_*wal 2 sql sql-server-2008-r2
我需要一些帮助,因为我正在学习SQL,所以我处于初级水平.我正在使用SQL Server 2008 R2.
我的问题是:我想(添加)总结一个混合值为varchar和的列decimal.我想忽略varchar值和总和decimal.我的专栏是这样的:
Column1
-------
0.1
Z
0.4
2.1
2.1
Z
Run Code Online (Sandbox Code Playgroud)
我需要在这种情况下的总和应该是: 4.7
我试过用CASE但是我没能解决它
SELECT
SUM(CASE
WHEN ISNUMERIC(Column1) = 1
THEN .(if true how i add them?).
ELSE .(and if false how i ignore them?).
END) AS Total
FROM
TABLE_Name
Run Code Online (Sandbox Code Playgroud)
我不善于解释事情,但我希望你能理解我想要做的事情.
如果这个问题已经得到解答,请告诉我该问题的方向和我对此的说法..非常感谢提前:)
只需使用以下WHERE条款CAST:
SELECT SUM(Cast(Column1 as numeric(10,2))) as Total
FROM TABLE_Name
Where IsNumeric(Column1) = 1
Run Code Online (Sandbox Code Playgroud)
结果:
TOTAL
4.7
Run Code Online (Sandbox Code Playgroud)
SQL Fiddle中的示例结果.
编辑:
正如@funkwurm指出的那样,该列有机会获得值'.' (点):
SELECT SUM(Cast(Column1 as numeric(10,2))) as Total
FROM TABLE_Name
Where IsNumeric(Column1 + 'e0') = 1
Run Code Online (Sandbox Code Playgroud)
小提琴.