【发布时间】:2018-10-11 17:34:54
【问题描述】:
我有一个名为 Food 的表,其中包含 BoxNumber、Analyte 和 AnalyteVal 列。
我需要这些框中特定分析物的总和(ana1、ana3、ana4)。 我该怎么做呢?
原始数据:
(Integer) (Varchar) (Varchar)
BoxNumber | Analyte | AnalyteVal
1 ana1 5
1 ana2 6
1 ana3 2f
1 ana4 6
2 ana3 1
2 ana4 4
3 ana1 2
3 ana2 4f
3 ana3 NULL
结果应该是:
BoxNumber | AnalyteVal
1 11
2 5
3 2
我的尝试:
SELECT BoxNumer,
SUM(CAST(ISNUMERIC(AnalyteVal) AS DECIMAL(10,2))) AS [DesiredSum]
FROM Food
WHERE analyte IN ('ana1','ana3','ana4')
GROUP BY BoxNumber
【问题讨论】:
-
您使用的是什么版本的 SQL Server?
-
@ZoharPeled Microsoft SQL Server 2008 R2 (SP2)
-
对于其中包含非数字数据的AnalyteVal值,2f或4f,您是要解析出数字,还是忽略该值?
-
忽略值pan>
-
谷歌
ISNUMERIC函数并阅读它的作用。不是你想的那样。
标签: sql sql-server tsql sql-server-2008-r2