如果不工作 SELECT

IF not working in SELECT

我正在尝试重写过程和特定查询,但遇到了麻烦。在 Sybase 中,这种类型的查询条件会起作用,但在 NETEZZA 中它会显示此错误:

expected ',' after the IF

我也找不到任何在查询中使用 netezza 条件的示例。什么是替代方案?

DECLARE static_date DATE;
...
INSERT INTO test(col1, col2)
SELECT tbl1.colx, (IF tbl2.dateCol< static_date THEN 1 ELSE 2 END IF) as col2
FROM tbl1, tbl2;    

你可以试试case表达式:

INSERT INTO test(col1, col2)
SELECT tbl1.colx,
       CASE WHEN tbl2.dateCol<static_date then 1 else 2 end as col2
FROM tbl1, tbl2;  

顺便说一句,尽量避免使用隐式连接语法,使用正确的连接语法,如下所示:

INSERT INTO test(col1, col2)
SELECT tbl1.colx,
       CASE WHEN tbl2.dateCol<static_date then 1 else 2 end as col2
FROM tbl1
INNER JOIN tbl2 ON(tbl1.CommonCol = tbl2.CommonCol)

最后..您在查询中缺少连接条件..请参阅我的 ON 条件。