[英]inside left join select with case when select where grouped by
我有這段代碼返回我想要的結果;
select stktype, Part_No,
Case when stktype = 'labour' then Part_No END
from fleet_job_jobdetails
where JobCode = '176071' AND StkType = 'labour'
group by part_no, StkType
stktype Part_No(無列名)Labor ANDR ANDR
當我將其添加到較大的代碼中時,出現錯誤
LEFT JOIN (
SELECT jobcode
, SUM(linecost) AS totalcost
, SUM(CASE WHEN stktype = 'sublet' THEN linecost
ELSE 0
END) AS subletcost
, SUM(CASE WHEN stktype = 'labour' THEN linecost
ELSE 0
END) AS labourcost
, SUM(CASE WHEN stktype = 'part' THEN linecost
ELSE 0
END) AS partscost
, SUM(CASE WHEN stktype NOT IN ('sublet', 'labour', 'part') THEN linecost
ELSE 0
END) AS othercost
, **CASE WHEN (select StkType from fleet_job_jobdetails WHERE stktype = 'labour') = 'labour' THEN Part_No ELSE '' END AS Mech**
FROM fleet_job_jobdetails
GROUP BY jobcode, Part_No
) a
ON fleet_job_jobmaster.jobcode = a.jobcode
Part_No 僅在這種情況下
** CASE
WHEN (select StkType
from fleet_job_jobdetails
WHERE stktype = 'labour') = 'labour' THEN
Part_No
因此不會出現Part_No的情況,您必須修改該語句以確保Part_No存在,並且在WHEN THEN
不存在
或者你只是只組jobcode
嘗試這個:
LEFT JOIN (
SELECT jobcode
, SUM(linecost) AS totalcost
, SUM(CASE WHEN stktype = 'sublet' THEN linecost
ELSE 0
END) AS subletcost
, SUM(CASE WHEN stktype = 'labour' THEN linecost
ELSE 0
END) AS labourcost
, SUM(CASE WHEN stktype = 'part' THEN linecost
ELSE 0
END) AS partscost
, SUM(CASE WHEN stktype NOT IN ('sublet', 'labour', 'part') THEN linecost
ELSE 0
END) AS othercost
--Here seems subquery is not required we can simply replace with it
, CASE WHEN stktype = 'labour' THEN Part_No ELSE '' END AS Mech
FROM fleet_job_jobdetails
GROUP BY jobcode, Part_No
) a
ON fleet_job_jobmaster.jobcode = a.jobcode
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.