【发布时间】:2020-08-30 08:39:16
【问题描述】:
我正在尝试运行在 SAS 中构建的查询,但没有让 case 语句在 Teradata SQL 中工作
原始 SAS 代码
CREATE TABLE WORK.RSL_Validation AS
SELECT
t.eventDt,
t.repID,
t.validation1,
t.validation2,
t.validation3,
(SUM((
CASE
WHEN t.validation1 is missing
THEN 0
ELSE 1
END),
(CASE
WHEN t.validation2 is missing
THEN 0
ELSE 1
END),
(CASE
WHEN t.validation3 is missing
THEN 0
ELSE 1
END))) AS Val_Count
FROM RSL t;
validation1、validtion2 和 validation3 的值显示为“?”在我制作的表格中,但我想它们将是空的。
我正在尝试的 SQL 代码是:
CREATE TABLE WORK.RSL_Validation AS
SELECT
t.eventDt,
t.repID,
t.validation1,
t.validation2,
t.validation3,
SUM((
CASE
WHEN t.validation1 is null
THEN 0
ELSE 1
END),
(CASE
WHEN t.validation2 is null
THEN 0
ELSE 1
END),
(CASE
WHEN t.validation3 is null
THEN 0
ELSE 1
END))) AS Val_Count
FROM RSL t;)
WITH DATA ON COMMIT PRESERVE ROWS;
似乎没有任何效果
【问题讨论】:
-
您是否尝试在每一行上独立地对三个值求和?或者在所有行中生成一个聚合?我不认为 Teradata 有
SUM(a,b,c)函数。尝试仅使用加法,a+b+c。如果您尝试聚合,则 Teradata 不会像 PROC SQL 那样重新合并聚合值。选择的每个变量都需要是 GROUP BY 的一部分或聚合函数。
标签: sas teradata teradata-sql-assistant