我这里有一个退料,主要是退半成品,和一个领料,主要是领半成品下面的物料的一个SQL语句:SELECT tf1.REM,tf1.IJ_NO,tf1.PRD_NO,tf1.ID_NO,tf1.qty ,tf2.FL_NO,tf2.PRD_NO,tf2. qtyFROM TF_IJ tf1
LEFT JOIN TF_FL tf2 ON tf2.REM=tf1.REM AND tf2.ITM=tf1.ITMWHERE tf1.REM!=''AND tf1.PRD_NO LIKE '1010%' AND tf1.REM='MO121001706'AND tf1.PRD_NO= '1010300125'
结果如下:
REM IJ_NO PRD_NO ID_NO qty FL_NO PRD_NO qty
MO121001706 WI130100106 1010300125 1010300125->A0 40 M7130600060 1030100163 300
然后我用递归查询出来了这个半成品下面的最终物料和单位用量(都递归过),语句如下:
WITH CTE(bom_no,prd_no,id_no,qty )
AS
(select bom_no,prd_no,id_no,qty from tf_bom WHERE BOM_NO='1010300125->A0'
UNION ALLSELECT A.BOM_NO,A.PRD_NO,A.id_no,CAST((B.qty*A.QTY) as NUMERIC(28,8)) AS qty
FROM CTE B
INNER JOIN tf_bom A on A.bom_NO=B.id_no )
SELECT bom_no,prd_no,id_no,qty FROM CTE where not exists( select 1 from tf_bom where bom_NO=CTE.id_no)
递归的结果是:
bom_no prd_no id_no qty
POL111->A0 1020300223 1
POL111->A0 1020300132 1
1010100060-> 1020500024 1
然后我想要的结果是根据查出退料的半成品及退料数,根据递归结果,得出应该领的最终物料的物料号及数量,和实际领的物料号及数量进行比较,结果如下:
IJ_NO PRD_NO ID_NO qty 1010300125->A0的下层物料 1010300125->A0的最终物料 根据递归的标准用量乘以退料的半成品数 FL_NO PRD_NO qty
WI130100106 1010300125 1010300125->A0 40 POL111->A0 1020300223 1x40 M7130600060 1030100163 300
WI130100106 1010300125 1010300125->A0 40 POL111->A0 1020300132 1x40 M7130600060 1030100163 300
WI130100106 1010300125 1010300125->A0 40 1010100060-> 1020500024 1x40 M7130600060 1030100163 300SQL递归
LEFT JOIN TF_FL tf2 ON tf2.REM=tf1.REM AND tf2.ITM=tf1.ITMWHERE tf1.REM!=''AND tf1.PRD_NO LIKE '1010%' AND tf1.REM='MO121001706'AND tf1.PRD_NO= '1010300125'
结果如下:
REM IJ_NO PRD_NO ID_NO qty FL_NO PRD_NO qty
MO121001706 WI130100106 1010300125 1010300125->A0 40 M7130600060 1030100163 300
然后我用递归查询出来了这个半成品下面的最终物料和单位用量(都递归过),语句如下:
WITH CTE(bom_no,prd_no,id_no,qty )
AS
(select bom_no,prd_no,id_no,qty from tf_bom WHERE BOM_NO='1010300125->A0'
UNION ALLSELECT A.BOM_NO,A.PRD_NO,A.id_no,CAST((B.qty*A.QTY) as NUMERIC(28,8)) AS qty
FROM CTE B
INNER JOIN tf_bom A on A.bom_NO=B.id_no )
SELECT bom_no,prd_no,id_no,qty FROM CTE where not exists( select 1 from tf_bom where bom_NO=CTE.id_no)
递归的结果是:
bom_no prd_no id_no qty
POL111->A0 1020300223 1
POL111->A0 1020300132 1
1010100060-> 1020500024 1
然后我想要的结果是根据查出退料的半成品及退料数,根据递归结果,得出应该领的最终物料的物料号及数量,和实际领的物料号及数量进行比较,结果如下:
IJ_NO PRD_NO ID_NO qty 1010300125->A0的下层物料 1010300125->A0的最终物料 根据递归的标准用量乘以退料的半成品数 FL_NO PRD_NO qty
WI130100106 1010300125 1010300125->A0 40 POL111->A0 1020300223 1x40 M7130600060 1030100163 300
WI130100106 1010300125 1010300125->A0 40 POL111->A0 1020300132 1x40 M7130600060 1030100163 300
WI130100106 1010300125 1010300125->A0 40 1010100060-> 1020500024 1x40 M7130600060 1030100163 300SQL递归
解决方案 »
- 数据库系统软件中登陆用户权限设置的问题?
- 求大家指教,这个触发器如何写,帮帮初学者,谢谢
- 在SQL server中如何得到象ORACLE中序列器的功能
- SQL 查询分析器不能查询 服务器: 消息 823,级别 24,状态 2,行 1 连接中断
- 夜深人静,可以产生冥想,可还有一个语句想不出来!能否帮帮我!
- 请大家来谈谈图片上传的经验,我的这么简单实现,为什么邹老大那么复杂,我的不足处,请指出!
- 我的数据库怎么附加不成功啊?
- 求助:在SQL中如何设置子查询的参数?
- 怎么用一句SQL语句返回按一个字段排序好的第50条到第79条记录?
- 有关JDBC插入数据时插不到数据库
- sql server 2008 db_owner为 unknown问题
- SQL Server的BUILTIN\Administrators用户
我要的结果截图是这样!