一个ERP的BOM报表如何写SQL

来自底层的愤怒 2018-12-07 05:58:35


请教下各位大佬 一个是存货档案表。 一个是BOM表头表,一个是BOM表体表。
BOM_QTR是数量


如何得出这样的效果

存货编码 存货名称 存货耗用量
item_code item_name BOM_QTR
1001 成品A 1
100101 半成品A 1
1002 成品B 1
100201 半成品B 1

求大佬帮助下,实在不会写,也搜过类似的用with as可是还是没搞懂这个语法怎么实现的。
...全文
283 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 1 楼 二月十六 的回复:
楼主这个规则是什么,目前看,三个表关联查询就能得到想要的结果
大佬,主要结构还是有个BOM和BOM_D的有组成关系 ,BOM代表成品,BOM_D代表他所组成的物料 所以希望查询出来的结果应该是。按简单的比喻就是 BOM是部门档案,然后BOM_D是人员档案。

成品A 而不是 成品A 例如: 总经办

半成品A 成品B 张总

成品B 半成品A 王总

半成品B 半成品B 销售部
李销售
王销售
然后我自己思路 是先查出 BOM表然后和BOM_D uion连接下,如果是一个还可以弄,想查询出多个就不知道怎么写了
  • 打赏
  • 举报
回复
引用 3 楼 吉普赛的歌 的回复:
USE tempdb
GO
IF OBJECT_ID('item') IS NOT NULL DROP TABLE item
IF OBJECT_ID('bom') IS NOT NULL DROP TABLE bom
IF OBJECT_ID('bom_d') IS NOT NULL DROP TABLE bom_d
GO
CREATE TABLE item(
id INT IDENTITY(1,1) PRIMARY KEY,
item_name NVARCHAR(10),
item_code INT
)
GO
CREATE TABLE bom(
bom_id INT PRIMARY KEY,
bom_item INT,
bom_qtr INT
)
GO
CREATE TABLE bom_d(
bom_d_id INT PRIMARY KEY,
item INT,
bom_id INT,
bom_qtr INT
)
GO
INSERT INTO item VALUES ('成品A',1001)
INSERT INTO item VALUES ('成品A',1002)
INSERT INTO item VALUES ('半成品A',100101)
INSERT INTO item VALUES ('半成品B',100201)
--
INSERT INTO bom VALUES (1,1001,1)
INSERT INTO bom VALUES (2,1002,1)
--
INSERT INTO bom_d VALUES (1,100101,1,1)
INSERT INTO bom_d VALUES (2,100201,2,1)
--
SELECT
a.item_code AS [存货编码]
,a.item_name AS [存货名称]
,isnull(b.bom_qtr,c.bom_qtr) AS [存货耗用量]
FROM item AS a
LEFT JOIN bom AS b ON a.item_code=b.bom_item
LEFT JOIN bom_d AS c ON a.item_code=c.item



大佬 呈现效果是我1楼那种样子,因为成品A是半成品组成的 所以我希望看到的是一个 成品A下面对应的组成物料是哪些,例如成品A是部门,下面都是该部门的人员一样
  • 打赏
  • 举报
回复
大佬们 这个不是这个意思 半成品A和成品A是对应关系,就是说 一个成品A是由半成品A组成的, 所以显示出来 希望是 我上面发的样子?
吉普赛的歌 2018-12-07
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('item') IS NOT NULL DROP TABLE item
IF OBJECT_ID('bom') IS NOT NULL DROP TABLE bom
IF OBJECT_ID('bom_d') IS NOT NULL DROP TABLE bom_d
GO
CREATE TABLE item(
	id INT IDENTITY(1,1) PRIMARY KEY,
	item_name NVARCHAR(10),
	item_code INT	
)
GO
CREATE TABLE bom(
	bom_id INT PRIMARY KEY,
	bom_item INT,
	bom_qtr INT
)
GO
CREATE TABLE bom_d(
	bom_d_id INT PRIMARY KEY,
	item INT,
	bom_id INT,
	bom_qtr INT	
)
GO
INSERT INTO item VALUES ('成品A',1001)
INSERT INTO item VALUES ('成品A',1002)
INSERT INTO item VALUES ('半成品A',100101)
INSERT INTO item VALUES ('半成品B',100201)
--
INSERT INTO bom VALUES (1,1001,1)
INSERT INTO bom VALUES (2,1002,1)
--
INSERT INTO bom_d VALUES (1,100101,1,1)
INSERT INTO bom_d VALUES (2,100201,2,1)
--
SELECT 
a.item_code AS [存货编码]
,a.item_name AS [存货名称]
,isnull(b.bom_qtr,c.bom_qtr) AS [存货耗用量]
FROM item AS a
LEFT JOIN bom AS b ON a.item_code=b.bom_item
LEFT JOIN bom_d AS c ON a.item_code=c.item


二月十六 2018-12-07
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'item') is null
drop table item
Go
Create table item([id] int,[item_name] nvarchar(24),[item_code] int)
Insert item
select 1,N'成品A',1001 union all
select 2,N'成品B',1002 union all
select 3,N'半成品A',100101 union all
select 4,N'半成品A',100201
GO
if not object_id(N'BOM') is null
drop table BOM
Go
Create table BOM([BOM_id] int,[BOM_item] int,[BOM_QTR] int)
Insert BOM
select 1,1001,1 union all
select 2,1002,1
GO
if not object_id(N'BOM_D') is null
drop table BOM_D
Go
Create table BOM_D([BOM_D_ID] int,[item] int,[BOM_ID] int,[BOM_QTR] INT)
Insert BOM_D
select 1,100101,1,1 union all
select 2,100201,2,1
Go
--测试数据结束
SELECT
item.item_code,
item.item_name,
ISNULL(BOM.BOM_QTR, BOM_D.BOM_QTR) AS BOM_QTR
FROM
item
LEFT JOIN
dbo.BOM
ON item_code = BOM_item
LEFT JOIN
dbo.BOM_D
ON item_code = item;

二月十六 2018-12-07
  • 打赏
  • 举报
回复
楼主这个规则是什么,目前看,三个表关联查询就能得到想要的结果
目 录 一、总体概述 5 二、名称解释 6 1、名称解释 6 2、流程图例解释 7 三、V2.0 ERP系统总体架构图 8 四、V2.0业务处理主要数据流程总图 9 五、系统基本参数说明 11 六、辅助资料 15 1.货物类别资料 15 2.采购员资料 17 3.销售员资料 19 4.存货地点资料 21 5.编制货币资料 23 6.汇率资料 24 7.编制港口资料 26 8.国家资料 27 9.单位资料 28 10.付款方式 29 11.科目资料 30 12.凭证摘要资料库维护 32 13.客户投诉原因资料定义 33 14.硬件设备资料 34 15.新旧货物替换关系资料 36 16.生产线资料(车间资料) 38 17.退货退料等原因资料定义 40 18.材料 41 19.颜色 42 20.银行资料定义 43 21.付款方法(结算方式) 44 22.产品特性 46 23.海关合同 47 25.折扣类型 49 26.生产线员工资料 50 27.工序资料定义 52 28.产地资料 53 29.付款条件 55 30.送货条件 57 29.装运条件 59 30.装运方式 61 31.供应商客户分析类别档案 63 32.附加费用定义 65 33.员工资料 67 34.部门资料定义 70 区域定义 71 七、主档部分 72 1.货物资料 72 2.货品SCM关系管理 77 3.物料清单BOM 79 4.工艺工序管理(加工中心) 82 5.供应商资料管理 86 6.客户资料管理 91 7.BOM反向查询报表 96 八、系统维护 97 1.公司资料定义 97 2.货物编号规则定义 100 3.文件头管理 104 4.语文言设置 107 5.日志数据处理 108 6.历史数据处理 110 7.注销状态数据处理 111 8.操作日志处理 112 9.单据号码规则维护 113 10.参数设置 116 11.角色管理 119 12.用户管理 120 13.权限管理 122 14.操作用户通信中心 125 15.提示资料维护 126 16、用户接口(界面)定制中心—销售订单(系统维护功能) 128 17.系统程序错误管理 131 17.1应用程序错误处理 131 17.2数据窗口错误处理 133 17.3数据验证错误处理 135 17.4错误处理报表 137 九、仓库管理 138 总概说明 138 1.转仓处理 141 2.库存调整 145 3.仓库盘点 148 4.货品交易记录报表 152 十一、分销管理 153 1、货品包装要求 154 2、包装形式资料 156 3、价格引擎 159 4、销售报价 162 5、销售订单 167 6、销售订单更改 178 7、销售出货 179 8、QC控制(分销出货) 185 9、销售发票 188 10、销售退货 193 11、销售退货通知单 197 12、分销订单应出货监控 198 13、包装资料维护 200 14、销售预测 200 15、客户销售业绩分析 201 16、销售人员业绩分析 202 17、货品利润分析 202 18、销售月结 202 19、货品装柜 202 十二、采购管理 203 1、采购询价 203 2、采购订单 208 3、采购收货 214 4、IQC控制(外购品质量控制) 220 5、采购退货[PO06] 223 6、供应商发票[PO07] 227 7、采购订单修改 231 8、订单采购应收货跟踪维护(谭建明) 233 9、采购退货通知书 235 十三、计划 236 1、行事历 236 2、计划周期定义(管理) 239 3、MRP运算 243 4、主生产计划 244 5、物料需求计划 244 6、粗能力计划 244 7、盘点计划 244 十四、生产 245 1、 生产单开单 245 2、 生产单进度处理 249 3、 排产 249 4、 生产领料 249 5、 成品回仓 249 6、 生产退料 249 7、 生产单清单 249 7、工程变动 250 十五、客户服务 251 1.服务性质资料定义 251 2.服务项目资料定义 252 3.咨询投诉处理() 253 4.服务跟踪及完成处理() 257 5.服务报告处理 257 十七、专用数据报表 258 货物清单报表 258 成本预算报表 258 货品存量分布报表 260 附记 261 模块编码表: 261 功能编码表: 261

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧