2015-09-17 23 views
-1

我有如下SQL語句:「從沒有發現關鍵的世界」SQL語句情況,即隨着SELECT *語法

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

DRV_ID的數據類型是什麼? – Bob

回答

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; 

我認爲你的邏輯也可以使用一些簡化。

+0

好的建議你把它分解成子查詢。我也發現它可以用這種方法解決。 – user1391079

0

我覺得你錯過了之前從和concat的空間,我也不這麼認爲兩個case case是必需的。

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;