一个拆分bom的问题.

zf_wl 2018-01-09 10:09:18


这是一套bom关系
想要拆成
成套编码 套内编码 套内数量
测试产品 测试零件1
测试产品 测试零件2
测试产品 分包拆零件1
测试产品 分包拆零件2
测试产品 分包拆零件3
测试产品 分包拆零件4
测试产品 部件拆零件1

想要一拆到底.达到上面的效果应该怎么写代码...
...全文
1036 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
听雨停了 2018-01-10
  • 打赏
  • 举报
回复
引用 2 楼 guixiguixi 的回复:


SELECT a.[成套编码] as 一层,a.[套内编码] as 二层,b.[套内编码] as 三层
FROM #tab a
left JOIN #tab b ON a.[套内编码] =b.[成套编码]
WHERE a.[成套编码]='测试产品'


下次问问题一次到位,别又问可不可以。就算我不会,论坛里肯定有人会的。不要一个问题解决了你又问另一个可不可以,肯定是可以得。但是没必要浪费大家时间,知道吗?下次注意哈
zf_wl 2018-01-10
  • 打赏
  • 举报
回复
引用 1 楼 qq_37170555 的回复:

use Tempdb
go
--> --> 听雨停了-->生成测试数据

if not object_id(N'Tempdb..#tab') is null
drop table #tab
Go
Create table #tab([成套编码] nvarchar(24),[套内编码] nvarchar(26),[继续拆分] varchar(20))
Insert #tab
select N'测试产品',N'测试分包1','是' union all
select N'测试产品',N'测试零件1','否' union all
select N'测试产品',N'测试零件2','否' union all
select N'测试产品',N'测试部件1','是' union all
select N'测试分包1',N'分包拆零件1','否' union all
select N'测试分包1',N'分包拆零件2','否' union all
select N'测试分包2',N'分包拆零件3','否' union all
select N'测试分包2',N'分包拆零件4','否' union all
select N'测试部件1',N'部件拆零件1','否' union all
select N'测试产品',N'测试分包2','是'
GO
--测试数据结束


;WITH cte AS (
Select *, [成套编码] as title from #tab WHERE [成套编码]='测试产品'
UNION ALL
SELECT a.*,b.title FROM #tab a
INNER JOIN cte b ON a.[成套编码] =b.[套内编码]
)
SELECT title AS [成套编码],[套内编码]
FROM cte
WHERE [继续拆分]='否'



可以把中间的过程拆出来吗

大概这种效果
听雨停了 2018-01-10
  • 打赏
  • 举报
回复

use Tempdb
go
--> --> 听雨停了-->生成测试数据

if not object_id(N'Tempdb..#tab') is null
drop table #tab
Go
Create table #tab([成套编码] nvarchar(24),[套内编码] nvarchar(26),[继续拆分] varchar(20))
Insert #tab
select N'测试产品',N'测试分包1','是' union all
select N'测试产品',N'测试零件1','否' union all
select N'测试产品',N'测试零件2','否' union all
select N'测试产品',N'测试部件1','是' union all
select N'测试分包1',N'分包拆零件1','否' union all
select N'测试分包1',N'分包拆零件2','否' union all
select N'测试分包2',N'分包拆零件3','否' union all
select N'测试分包2',N'分包拆零件4','否' union all
select N'测试部件1',N'部件拆零件1','否' union all
select N'测试产品',N'测试分包2','是'
GO
--测试数据结束


;WITH cte AS (
Select *, [成套编码] as title from #tab WHERE [成套编码]='测试产品'
UNION ALL
SELECT a.*,b.title FROM #tab a
INNER JOIN cte b ON a.[成套编码] =b.[套内编码]
)
SELECT title AS [成套编码],[套内编码]
FROM cte
WHERE [继续拆分]='否'

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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