2014-09-02 45 views
0

我试图用一个case语句来填充字段(状态)字段添加到字段列表不在,我从选择表这可能使用情况的语句的MySQL

SELECT j.JobID, j.Company, j.WellName,j.RigNumber, 
CASE 
WHEN j.JobComplete = 1 Then status = 'Job Complete' 
WHEN j.JobInitiated = 1 Then status = 'Job Initiated' 
WHEN j.JobInProgress = 1 Then status = 'In Initiated' 
WHEN j.JobPotential = 1 Then status = 'Job Potential' 
WHEN j.JobCancelled = 1 Then status = 'Job Cancelled' 
WHEN j.JobInvoiced = 1 Then status = 'Job Invoiced' 
WHEN j.JobPaid = 1 Then status = 'Job Paid' 
END AS 'status', 

jdn.NotesTime,jdn.Username,jdn.Notes 
FROM Job as j 
JOIN JobDailyNotes as jdn ON jdn.jobid = j.jobid 
WHERE jdn.NotesTime Between '1900-01-01 12:00:00' AND '2014-12-31 23:59:59' 

回答

0

是的,它应该有效,但答案将基于符合条件的第一个“WHEN”条款。根据您的查询,如果作业已完成,但尚未支付的,状态仍然是“工作完成”

CASE 
WHEN j.JobComplete = 1 Then status = 'Job Complete' 
WHEN j.JobInitiated = 1 Then status = 'Job Initiated' 
WHEN j.JobInProgress = 1 Then status = 'In Initiated' 
WHEN j.JobPotential = 1 Then status = 'Job Potential' 
WHEN j.JobCancelled = 1 Then status = 'Job Cancelled' 
WHEN j.JobInvoiced = 1 Then status = 'Job Invoiced' 
WHEN j.JobPaid = 1 Then status = 'Job Paid' 
end Status... 

所以,你可能需要进行调整,以更好地符合你作为一个找什么状态栏作为全额付款的“最终”步骤可能是您的FIRST when条款,然后从该条款返回,例如:

CASE 
WHEN j.JobPaid = 1 Then status = 'Job Paid' 
WHEN j.JobComplete = 1 Then status = 'Job Complete' 
WHEN j.JobInvoiced = 1 Then status = 'Job Invoiced' 
WHEN j.JobCancelled = 1 Then status = 'Job Cancelled' 
WHEN j.JobInProgress = 1 Then status = 'In Initiated' 
WHEN j.JobInitiated = 1 Then status = 'Job Initiated' 
WHEN j.JobPotential = 1 Then status = 'Job Potential' 
end Status...