求一SQL語句

wudefly 2006-11-01 10:24:18
表:
ID PartID(物料ID) OrderNo(訂單編號) wareqty(倉存數) qty(訂單數量)
-----------------------------------------------------------------------------------
1 1 3875 1000 75
2 1 4851 1000 80
3 1 3950 1000 750
4 2 3875 800 120
5 2 4851 800 600
6 2 3950 800 1200
要求查詢得如下:
PartID OrderNo NewQty
1 3875 925
1 3950 175
1 4851 95
2 3875 680
2 3950 -520
2 4851 -600
...全文
118 13 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
blackant2 2006-11-01
  • 打赏
  • 举报
回复

(所影响的行数为 6 行)


(所影响的行数为 6 行)


(所影响的行数为 6 行)

ID PartID OrderNo wareqty qty
----------- ----------- ----------- ----------- -----------
1 1 3875 1000 925
3 1 3950 1000 175
2 1 4851 1000 95
4 2 3875 800 680
6 2 3950 800 -520
5 2 4851 800 -1120

(所影响的行数为 6 行)

blackant2 2006-11-01
  • 打赏
  • 举报
回复
declare @t table(
[ID] int
,PartID int
,OrderNo int
,wareqty int
,qty int
)

insert into @t
select 1 ,1, 3875, 1000, 75
union select 2,1, 4851 ,1000 ,80
union select 3 ,1, 3950 ,1000 ,750
union select 4 ,2 ,3875 ,800 ,120
union select 5 ,2 ,4851 ,800 ,600
union select 6 ,2 ,3950 ,800, 1200


declare @curid int
declare @curnum int
set @curid=0
set @curnum=0

select *
into #tmp
from @t
order by partid,orderno


update #tmp set @curnum=(case when @curid=partid then @curnum-qty else wareqty-qty end)
,@curid=partid
,qty=@curnum

select * from #tmp

drop table #tmp
hegang888888888 2006-11-01
  • 打赏
  • 举报
回复
Select PartID,OrderNo,sum(wareqtyqty) as NewQty from TB group by OrderNo
HJS1820 2006-11-01
  • 打赏
  • 举报
回复
看不出來存在什么算法
幫頂
leaohong 2006-11-01
  • 打赏
  • 举报
回复
select partid,orderno,sum(wareqty)-sum(qty) as newqty
from table
group by partid,orderno
order by partid
Eddie005 2006-11-01
  • 打赏
  • 举报
回复
流水账这种东西,最好还是确认订单时就记录记录下来,现在再想用sql来实现,比较麻烦,需要写一个存储过程,declare一张临时表,先把记录按顺序查询出来并插入之,然后使用游标遍历并计算流水账
copico 2006-11-01
  • 打赏
  • 举报
回复
-520
这个数据从哪来的啊
copico 2006-11-01
  • 打赏
  • 举报
回复
不对,重来
lizhizhe2000 2006-11-01
  • 打赏
  • 举报
回复
Select PartID,OrderNo,wareqty-qty as NewQty from TB
copico 2006-11-01
  • 打赏
  • 举报
回复
SELECT PartID,OrderNo,wareqty-qty as NewQty from table1
wfcfan 2006-11-01
  • 打赏
  • 举报
回复
不懂..
lizhizhe2000 2006-11-01
  • 打赏
  • 举报
回复
Select PartID,OrderNo,wareqtyqty as NewQty from TB
wudefly 2006-11-01
  • 打赏
  • 举报
回复
謝謝 blackant2(乔峰)!!

update #tmp set @curnum=(case when @curid=partid then @curnum-qty else wareqty-qty end)
將上面這句改一下就得到我要的結果了:
update #tmp set @curnum=(case when @curid=partid then case when @curnum>0 then @curnum-qty else 0-qty end else wareqty-qty end),@curid=partid,qty=@curnum
是這樣的,一張訂單600pcs,針對這張訂單來說,如果倉存數沒有了,就欠料600pcs.
也就是說,針對一張訂單,欠料是不能大於其數量的.

相关推荐
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-11-01 10:24
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。