我的示例数据中有一列包含1或0或“空”。 由于字符串为“ null”,因此我将列的类型声明为字符串。 在下一个操作中,我仅取1&0,并执行SUM(Value),在该错误中我无法从“字符串”转换为“长?”
答案 0 :(得分:1)
对于解决此问题的另一种方法,您可以执行以下操作。我建议列名称为“金额”:
@ input = 选择 CASE列金额何时“ 0”否终止金额 FROM @extractedFields
@ sum = 选择 SUM(Int32.Parse(金额)) 从@input
通过这种方法,总和的输入将仅考虑元素1和0。
答案 1 :(得分:0)
SUM功能适用于数字类型,因此请尝试类似SUM(ToInt64(VALUE))
答案 2 :(得分:0)
您可以按照here的说明使用和内联函数表达式。这是一个简单的示例:
@input =
SELECT * FROM
( VALUES
( (string)"0" ),
( (string)"1" ),
( (string)"null")
) AS x( yourCol );
@output =
SELECT y
FROM
(
SELECT (
(Func<string, int?>)
(yourString =>
{
int yourInt;
return int.TryParse(yourString, out yourInt) ? (int?) yourInt : (int?) null;
}
)
) (yourCol) AS y
FROM @input
) AS x
WHERE y IS NOT NULL;
OUTPUT @output
TO "/output/output.csv"
USING Outputters.Csv();
我的结果: