如果不工作 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 条件。
我正在尝试重写过程和特定查询,但遇到了麻烦。在 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 条件。