select case when t = '1' then 896257460988416000 when t = '2' then 896257431468904448 end as supplytype from regexp_split_to_table( (select(replace(replace(replace(suppliers,'[',''),']',''),'"','')) from kpi_library where id = kl.id),',') as t 报错t不属于字段,应如何修改
时间: 2023-08-06 12:19:29 浏览: 108
vue select 获取value和lable操作
根据你的 SQL 语句,因为 `t` 是在 `select` 语句中定义的一个列别名,所以在 `regexp_split_to_table` 函数中无法直接使用 `t`。你可以使用子查询来解决这个问题,具体的 SQL 语句如下:
```
SELECT
CASE
WHEN t = '1' THEN 896257460988416000
WHEN t = '2' THEN 896257431468904448
END AS supplytype
FROM
(SELECT
regexp_split_to_table(
replace(replace(replace(suppliers, '[', ''), ']', ''), '"', ''),
','
) AS t
FROM
kpi_library
WHERE
id = kl.id
) AS subquery;
```
在这个语句中,我们使用了一个子查询来将 `regexp_split_to_table` 的输出作为一个临时表,并将其命名为 `subquery`。在这个临时表中,我们可以使用 `t` 作为一个列名,然后在外部查询中使用这个列来进行条件判断。
阅读全文