请问这个SQL怎么写
毕业设计
1
表A:
表B:
表A中的planNumber是唯一的,表B的planNumber不是唯一,与表A相关联;
我现在想通过他们的planNumber关联关系,使表B里面相同的planNumber编号的qty相加,然后与表A的totalQty进行对比;
让我在前端选择的时候获得相对应的数据; 比如“未下单”,就是qty的和值=0的数据 “部分下单”就是qty的和值<totalQty的数据 “全部下单”就是qty的和值=totalQty的数据
-
SELECT a.planNumber planNumber,a.totalQty totalQty, b.qtys qtys from 表 A a LEFT JOIN (SELECT planNumber, sum(qty) qtys FROM 表B GROUP BY planNumber) b on a.planNumber = b.planNumber having 1=1 --- 如果是postgres 数据库 将别名修改为字段名 比如 将qtys -> b.qtys totalQty -> a.totalQty <if test="未下单"> and qtys ==0 </if> <if test="部分下单"> and qtys < totalQty </if> <if test="全部下单"> and qtys == totalQty </if>
-
select a.planNumber,a.totalqty,c.qty, case when c.qty=0 then '未下单' when qty<totalqty then '部分下单' when qty=totalqty then '全部下单' else '未知' end from a left join (select b.planNumber,sum(b.qty) qty from sale_order b where b.planNumber <> '' GROUP BY b.planNumber) c on a.planNumber=c.planNumber
-
select CASE WHEN a.totalQty-b.totalQty=0 THEN '全部下单' WHEN a.totalQty-b.totalQty>0 THEN '部分下单' ELSE '未下单' END status from 表A a left join (select planNumber,sum(b.qty) totalQty from sale_order GROUP BY planNumber) b on a.planNumber=b.planNumber
发表回复