我有一个SQL语句如下:
SELECT * ,(CASE WHEN DRV_ID IS NOT NULL THEN CASE WHEN (DRV_ID)<'100' thenconcat(rental_type_c,'*')ENDELSE '9' end) as testing99FROM dmtb_driver;
只是想知道为什么它会提示我错误“从关键世界找不到。”如果我以这种方式改变我的陈述:
SELECT DRV_Name,DRV_ID ,(CASE WHEN DRV_ID IS NOT NULL THEN CASE WHEN (DRV_ID)<'100' thenconcat(rental_type_c,'*')ENDELSE '9' end) as testing99FROM dmtb_driver;
它完美运作。好奇不是我需要输入所有字段名称1而不是使用'*'?
答案 0 :(得分:1)
您需要为表格添加别名。
SELECT
d.*,
CASE WHEN DRV_ID IS NOT NULL THEN
CASE WHEN (DRV_ID)<'100' THEN
CONCAT(rental_type_c,'*')
END
ELSE
'9'
END as testing99
FROM
dmtb_driver d;
我认为你的逻辑也可以使用一些简化。
答案 1 :(得分:0)
我认为你在离开之前错过了空间,并且我不认为这样需要两个案例陈述。
SELECT * ,(CASE WHEN DRV_ID IS NOT NULL AND (DRV_ID)<'100' then concat(rental_type_c,'*') ELSE '9' end) as testing99
FROM dmtb_driver;