使用Select *语法

时间:2015-09-17 00:33:39

标签: sql oracle

我有一个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而不是使用'*'?

2 个答案:

答案 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;