如何将此 usql 转换为有效的 sql 查询
How to convert this usql to valid sql query
SELECT DISTINCT
d.id AS id,
CASE
WHEN (c.a = 'UNK' ? NULL : c.a) IS NOT NULL THEN c.a
WHEN (b.a = 'UNK' ? NULL : b.a) IS NOT NULL THEN b.a
WHEN (c.e = 'UNK' ? NULL : c.e) IS NOT NULL THEN c.e
ELSE b.e
END AS output,
FROM
db.table
...random irrelevant joins..
我已将问题追溯到代码的案例结束部分。我收到一个解析异常错误。我假设 (c.a = 'UNK' ? NULL : c.a)
不受支持。我将如何转换它?
是:
SELECT DISTINCT
d.id AS id,
CASE
WHEN c.a != 'UNK' THEN c.a
WHEN b.a != 'UNK' THEN b.a
WHEN c.e != 'UNK' THEN c.e
ELSE b.e
END AS output,
FROM db.table;
或者 (c.a = 'UNK' ? NULL : c.a) IS NOT NULL
与 NULLIF(c.a, 'UNK') IS NOT NULL
相同 => c.a != 'UNK'
如果我理解正确的话,简单的比较一下就可以了:
SELECT DISTINCT d.id AS id,
(CASE WHEN c.a <> 'UNK' THEN c.a
WHEN b.a <> 'UNK' THEN b.a
WHEN c.e <> 'UNK' THEN c.e
ELSE b.e
END) AS output,
FROM . . .
NULL
未通过 <>
比较,因此这在语义上应该是等价的。
SELECT DISTINCT
d.id AS id,
CASE
WHEN (c.a = 'UNK' ? NULL : c.a) IS NOT NULL THEN c.a
WHEN (b.a = 'UNK' ? NULL : b.a) IS NOT NULL THEN b.a
WHEN (c.e = 'UNK' ? NULL : c.e) IS NOT NULL THEN c.e
ELSE b.e
END AS output,
FROM
db.table
...random irrelevant joins..
我已将问题追溯到代码的案例结束部分。我收到一个解析异常错误。我假设 (c.a = 'UNK' ? NULL : c.a)
不受支持。我将如何转换它?
是:
SELECT DISTINCT
d.id AS id,
CASE
WHEN c.a != 'UNK' THEN c.a
WHEN b.a != 'UNK' THEN b.a
WHEN c.e != 'UNK' THEN c.e
ELSE b.e
END AS output,
FROM db.table;
或者 (c.a = 'UNK' ? NULL : c.a) IS NOT NULL
与 NULLIF(c.a, 'UNK') IS NOT NULL
相同 => c.a != 'UNK'
如果我理解正确的话,简单的比较一下就可以了:
SELECT DISTINCT d.id AS id,
(CASE WHEN c.a <> 'UNK' THEN c.a
WHEN b.a <> 'UNK' THEN b.a
WHEN c.e <> 'UNK' THEN c.e
ELSE b.e
END) AS output,
FROM . . .
NULL
未通过 <>
比较,因此这在语义上应该是等价的。