我有一张小桌子
[db2inst1@dashmpp-head-0 - Db2wh ~]$ db2 "select * from TEX"
C1 C2
-------------------- ----------
1000 2000
1 record(s) selected.
我试着用case语句进行一个小的计算,如下所示:
SELECT c1,
CASE
WHEN c1 > 0 THEN 10
WHEN c1 = 30 THEN 5
ELSE 1
END AS QuantityText,
c2,
100 / QuantityText as UTILIZATION
FROM TEX;
这是查询的语法是正确的,但当我运行它时,我得到:
SQL0206N "QUANTITYTEXT" is not valid in the context where it is used.
SQLSTATE=42703
如果不进行计算,以下查询运行良好:
[db2inst1@dashmpp-head-0 - Db2wh ~]$ db2 "SELECT c1,
> CASE
> WHEN c1 > 0 THEN 'The quantity is greater than 30'
> WHEN c1 = 30 THEN 'The quantity is 30'
> ELSE 'The quantity is under 30'
> END AS QuantityText,
> c2
> FROM TEX;"
C1 QUANTITYTEXT C2
-------------------- ------------------------------- ----------
1000 The quantity is greater than 30 2000
1 record(s) selected.
我是sql的新手,我不确定我在这里做错了什么。如何使用
QuantityText
在计算中?如果我对查询中的文本进行硬编码,它可以正常工作。
我尝试过的:
-
已添加
100 / @QuantityText as UTILIZATION
-
已添加
100 / bigint(double(QuantityText)) as CPU_UTILIZATION
-
SELECT c1,
c2,
100 / QuantityText as UTILIZATION FROM (
CASE
WHEN c1 > 0 THEN 10
WHEN c1 = 30 THEN 5
ELSE 1
END AS QuantityText,
TEX);
SQL0104N An unexpected token "CASE WHEN" was found following
"UTILIZATION FROM ( ". Expected tokens may include: "<select>".
SQLSTATE=42601