难道。。。急,求一条SQL

人鱼传说 2011-09-13 09:35:22



我想得出应产出量里的值,也就是说:用以面的每本道工序的投入量乘转换率的连乘+加上本道工序的投入量*本道工序的转换率。。。。得出至本工序为止,应该产出的量。
...全文
126 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
-晴天 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 baronyang 的回复:]
引用 16 楼 qianjin036a 的回复:
SQL code
create table tb(工艺序号 int,投入量 int,转换率 int)
insert into tb select 1,20,1
insert into tb select 2, 0,2
insert into tb select 3, 0,1
insert into tb select 4,10,2
i……
[/Quote]
不好意思,只看到给的数据那么简单,又瞄了一眼程序那么长,以为就单为解决这个问题来着,因为不懂oracle编程,以为.........

见笑了.
人鱼传说 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 qianjin036a 的回复:]
SQL code
create table tb(工艺序号 int,投入量 int,转换率 int)
insert into tb select 1,20,1
insert into tb select 2, 0,2
insert into tb select 3, 0,1
insert into tb select 4,10,2
insert into tb select 5, 0,……
[/Quote]

qianjin036a,我看了下你写的,跟我的思路也基本上差不多吧,只是我的是应用到实例中去了,要查的表多一些,例如我的投入量也是从别的表sum出来的。。且我还要做其他的分析,所以又多查询了一层,且还查了一个应投入量(MyshouldIn)。。。所以显得代码多了些。。。。
哈哈,不过,不错,起码又是另一种写法。。。学习了。。。
-晴天 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 fredrickhu 的回复:]
引用 3 楼 baronyang 的回复:
已自己搞定。。。我再自己验证一下,如果没问题的话,就结贴算了。


分享一下吧 懒得写了 思维应该是递归的
[/Quote]

正解.
-晴天 2011-09-13
  • 打赏
  • 举报
回复
create table tb(工艺序号 int,投入量 int,转换率 int)
insert into tb select 1,20,1
insert into tb select 2, 0,2
insert into tb select 3, 0,1
insert into tb select 4,10,2
insert into tb select 5, 0,3
insert into tb select 6, 5,2
go
;with cte as(
select *,投入量*转换率 as 应产出量 from tb where 工艺序号=1
union all
select b.*,(b.投入量+a.应产出量)*b.转换率 from cte a inner join tb b on a.工艺序号=b.工艺序号-1
)
select * from cte
/*
工艺序号 投入量 转换率 应产出量
----------- ----------- ----------- -----------
1 20 1 20
2 0 2 40
3 0 1 40
4 10 2 100
5 0 3 300
6 5 2 610

(6 行受影响)

*/
go
drop table tb
人鱼传说 2011-09-13
  • 打赏
  • 举报
回复
对了,上面的第二个注释写错了。。应该是
--应产出量,在乘转换率时要算到本道工序的。故AA.ecm03<=BB.ecm03,CC.ecm03<=BB.ecm03.
人鱼传说 2011-09-13
  • 打赏
  • 举报
回复
哈哈,反正都一样。。。这条SQL里,除了nvl,其他没什么不同的了。。。
楼上的,如果你有更好的思路,麻烦你写个不复杂的给我。。。我正嫌自己写得太长了。。
-晴天 2011-09-13
  • 打赏
  • 举报
回复
太长了....
貌似一个不太复杂的运算....
geniuswjt 2011-09-13
  • 打赏
  • 举报
回复
恭喜LZ
--小F-- 2011-09-13
  • 打赏
  • 举报
回复
ORACLE的...
--小F-- 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 baronyang 的回复:]
已自己搞定。。。我再自己验证一下,如果没问题的话,就结贴算了。
[/Quote]

分享一下吧 懒得写了 思维应该是递归的
  • 打赏
  • 举报
回复
nvl() oracle的
  • 打赏
  • 举报
回复
人鱼传说 2011-09-13
  • 打赏
  • 举报
回复

select
ecm01,ecm03,ecm04,ecm27,sfa06,wip,ecm301,ecm311,ecm312,ecm313,ecm314,tc_ecm04,tc_ecm05,ZhiTL,
MyShouldIn,MyShouldOut
from
(
select
ecm01,ecm03,ecm04,ecm27,nvl((select sum(sfa06) from sfa_file where sfa01=ecm01 and sfa08=ecm04),0)sfa06,
(ecm301*ecm27)-(ecm311+ecm313+ecm314) wip,ecm301,ecm311,ecm312,ecm313,ecm314,tc_ecm04,tc_ecm05,
(select exp(sum(ln(ecm27))) from ecm_file AA where AA.ecm01=BB.ecm01 and AA.ecm03<=BB.ecm03) ZhiTL,
(
select
sum(
nvl((select sum(sfa06) from sfa_file where sfa01=AA.ecm01 and sfa08=AA.ecm04),0)*
nvl((select exp(sum(ln(ecm27))) from ecm_file CC where CC.ecm01=AA.ecm01 and CC.ecm03>=AA.ecm03 AND CC.ecm03<BB.ecm03),1)
)
from ecm_file AA
where AA.ecm01=BB.ecm01 and AA.ecm03<=BB.ecm03
) MyShouldIn, --应投入量,在乘转换率时只要算到上道工序就OK了。但本道的投入量还是要加,故AA.ecm03<=BB.ecm03,而CC.ecm03<BB.ecm03.
(
select
sum(
nvl((select sum(sfa06) from sfa_file where sfa01=AA.ecm01 and sfa08=AA.ecm04),0)*
nvl((select exp(sum(ln(ecm27))) from ecm_file CC where CC.ecm01=AA.ecm01 and CC.ecm03>=AA.ecm03 AND CC.ecm03<=BB.ecm03),1)
)
from ecm_file AA
where AA.ecm01=BB.ecm01 and AA.ecm03<=BB.ecm03
) MyShouldOut --应产出量,在乘转换率时要算到本道工序的。故AA.ecm03<=BB.ecm03,而CC.ecm03<BB.ecm03.
from ecm_file BB
left join tc_ecm_file on ecm01=tc_ecm01 and ecm03=tc_ecm02
where ecm01='S317-110802002' --'S311-110802002'
order by ecm03
)CC
人鱼传说 2011-09-13
  • 打赏
  • 举报
回复
放心,呆会验证如果没什么问题的话,会拿出来分享的。
chuanzhang5687 2011-09-13
  • 打赏
  • 举报
回复
蹭点分,lz分享一下
dawugui 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 baronyang 的回复:]
已自己搞定。。。我再自己验证一下,如果没问题的话,就结贴算了。
[/Quote]恭喜.
人鱼传说 2011-09-13
  • 打赏
  • 举报
回复
已自己搞定。。。我再自己验证一下,如果没问题的话,就结贴算了。
人鱼传说 2011-09-13
  • 打赏
  • 举报
回复
要求直接用SQL来做。。。
dawugui 2011-09-13
  • 打赏
  • 举报
回复
这个用程序写或油标来做,比较简单,直接用SQL语句来做,很麻烦.

27,580

社区成员

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

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