2016-09-23 12 views
-1
SELECT item_number, item_name, description, status, active_date, inactive_date, creation_date, creation_by, last_updated_date, last_updated_by, 
(CASE WHEN inactive_date IS NULL THEN 
    CASE WHEN active_date <= curdate() THEN 'ACTIVE' ELSE 'FUTURE ACTIVE' END 
ELSE 
    CASE WHEN active_date = inactive_date THEN 'INACTIVE' 
      WHEN active_date <= curdate() AND inactive_date > curdate() THEN 'ACTIVE' 
      WHEN active_date > curdate() AND inactive_date > curdate() THEN 'FUTURE ACTIVE' 
    ELSE 'INACTIVE' END 
END) as status 

私を助けてください。私はmysqlで新しいです。あなたのSELECTでエラー:「フィールドリスト」の「ステータス」が不明です

+0

テーブルに 'status'という列がありますか?そうでない場合は、選択リストから削除します。それがある場合は、case文の別名を別のものに変更します。 –

+0

あなたは 'from'を持っていません – Drew

+0

@Drew ....やテーブル名など私はかなり間違いが面白いと確信しています。 –

答えて

0

は、あなたがstatusは含まれています:

SELECT item_number, item_name, description, status 

を新しい列としてASstatusを定義しているので、私はあなたのテーブルがstatus列自体を持っていないと思われます。 statusを削除し、それが

SELECT item_number, item_name, description, active_date, inactive_date, creation_date, creation_by, last_updated_date, last_updated_by, 
(CASE WHEN inactive_date IS NULL THEN 
    CASE WHEN active_date <= curdate() THEN 'ACTIVE' ELSE 'FUTURE ACTIVE' END 
ELSE 
    CASE WHEN active_date = inactive_date THEN 'INACTIVE' 
      WHEN active_date <= curdate() AND inactive_date > curdate() THEN 'ACTIVE' 
      WHEN active_date > curdate() AND inactive_date > curdate() THEN 'FUTURE ACTIVE' 
    ELSE 'INACTIVE' END 
END) as Status 

またfromクラスが欠落しているcaseの結果であるならば、それは必要とされていないselectから

SELECT item_number, item_name, description, active_date, inactive_date, creation_date, creation_by, last_updated_date, last_updated_by, 
+0

ありがとう@martin nyolt –

0

削除状態にラインを回します。

+0

ありがとう@jensそれは動作します...この愚かな間違いを申し訳ありません....明らかに私のテーブルにSTATUSの列はありません....私がこれをするとき、 "エラー:未知の列 'ステータス' 'where句' ''で。item_master WHERE status = '"。$ _ POST [' status ']。 "'"; .... oracleこれはうまくいくはずです.... –

+0

@DienyAkmalいいえ、Statementのエイリアスにアクセスすることはできません。代わりにhaving句を使用する必要があります – Jens

関連する問題