我做这个查询需求是如果b.contractid=1那么c.contractamount就会等于空或者0,请问各位大神们该怎么改
SELECT
b.id,
b.contractid,
b.prjname,
b.prjmanager,
b.budgetamount,
b.ownerorg,
b.jlorg,
b.settleprinciple,
b.remark,
b.createmanid,
b.createdatetime,
b.relevance,
b.createorgid,
c.contractamount
FROM projbudge as b
cross join projcostaccouting as c
WHERE 1=1 and b.contractid=1
------解决思路----------------------
SELECT
b.id,
b.contractid,
b.prjname,
b.prjmanager,
b.budgetamount,
b.ownerorg,
b.jlorg,
b.settleprinciple,
b.remark,
b.createmanid,
b.createdatetime,
b.relevance,
b.createorgid,
case when b.contractid=1 then c.contractamount else 0 end as contractamount
FROM projbudge as b
cross join projcostaccouting as c
------解决思路----------------------
用CASE处理就可以啦,要NULL 要0都做得到
或许应该直接左连接
SELECT
b.id,
b.contractid,
b.prjname,
b.prjmanager,
b.budgetamount,
b.ownerorg,
b.jlorg,
b.settleprinciple,
b.remark,
b.createmanid,
b.createdatetime,
b.relevance,
b.createorgid,
c.contractamount
FROM projbudge as b
LEFT join projcostaccouting as c ON b.contractid=1 and 其他连接条件