2016-01-30 96 views
0

我在這個CASE聲明中遇到問題。希望它是一個語法問題。Case Case中的問題

CASE quot_status.open_auth_date IS NULL 
WHEN 1 THEN 'Pending' 
WHEN 2 THEN 'Completed' 
ELSE IF WHEN tender.open_authorization > quot_status.open_auth_date THEN 'Due' 
END 
AS `Open Auth Status` 

在上面的tender.open_authorization和quot_status.open_auth_date就像比較日期。

讓我來解釋一下這個場景。我在我的MySQL數據庫中有兩個日期字段。第一個字段被稱爲「quot_status.open_auth_date」,第二個字段是「tender.open_authorization」。我需要在這裏檢查3個條件。第一個條件是我需要檢查'tender.open_authorization> quot_status.open_auth_date'然後打開身份驗證狀態應顯示結果'到期'。如果到期的話Case Statement必須是Exited或END。第二個條件是我應該檢查,如果quot_status.open_auth_date ='NULL',如果其NULL開放身份驗證狀態應顯示結果爲'待定',否則它應該顯示'已完成'。

+0

任何人幫助我嗎? –

+0

嘗試用'END CASE'代替'END' – user3284463

+0

@User,不,這不是問題。我剛剛嘗試過。 –

回答

0
CASE quot_status.open_auth_date 
     WHEN 1 THEN 'Pending' 
     WHEN 2 THEN 'Completed' 
     WHEN tender.open_authorization > quot_status.open_auth_date THEN 'Due' 
END AS `Open Auth Status` 

試試這個代碼

+1

謝謝。一些改動工作正常。 :) –

+0

@Sanjumenon你可以回答你自己的問題 – Strawberry

0

您的格式有一些問題, 您可以按照下面的語法,使您的查詢....

CASE 
      WHEN (ISNULL(quot_status.open_auth_date) && <status=1>)  THEN 'Pending' 
      WHEN (ISNULL(quot_status.open_auth_date) && <status=2>)  THEN 'Completed' 
      WHEN (tender.open_authorization > quot_status.open_auth_date) THEN 'Due' 
                      ELSE '<Unknown>' 
    END AS `Open Auth Status`