急求一汇总SQL

lvanjie 2007-04-23 09:13:31
在SQL2000中有两个表Table1 和Table2 ,内容分别为
表Table1中
下单日期 物品名称 下单数量
07.2.10 桌子 200
07.3.15 桌子 30
07.3.20 桌子 200
07.3.25 桌子 110
07.3.10 柜子 120
07.3.12 柜子 180
07.3.12 书 50

表Table2中
交货日期 物品名称 交货数量
07.2.10 桌子 200
07.3.12 桌子 80
07.3.10 柜子 120
07.3.15 柜子 120

要求通过一SQL语句查出同一物品在Table2中的交货总数小于在Table1的下单总数时之后的下单信息
如:Table2中桌子交货总数为200+80=280
在Table1中桌子的下单按时间先后的顺序相加下单数量,当加到07.3.20日时即:200+30+200=430 已大于交货数量,则要求得出07.3.20日起以后的桌子下单信息。

最终要求查询得出的结果(累计未完成下单量的信息)如下:
下单日期 物品名称 下单数量
07.3.20 桌子 200
07.3.25 桌子 110
07.3.12 柜子 180
07.3.12 书 50

注:上述两表Table1和Table2,除物品名称外不能使用类似下单号作为联系,不考虑交货日期与下单日期之间的关系,只考虑相同物品累计数量差的关系。

很急,请高手详细指导!



...全文
219 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvanjie 2007-04-25
  • 打赏
  • 举报
回复
OK, 谢谢高手!
chuifengde 2007-04-24
  • 打赏
  • 举报
回复
declare @a table(下单日期 smalldatetime, 物品名称 varchar(10), 下单数量 int)
insert @a select '07.2.10', '桌子', 200
union all select '07.3.15', '桌子', 30
union all select '07.3.20', '桌子', 200
union all select '07.3.25', '桌子', 110
union all select '07.3.10', '柜子', 120
union all select '07.3.12', '柜子', 180
union all select '07.3.12', '书', 50

declare @b table(交货日期 smalldatetime, 物品名称 varchar(10), 交货数量 int)
insert @b select '07.2.10', '桌子',200
union all select '07.3.12', '桌子', 80
union all select '07.3.10', '柜子', 120
union all select '07.3.15', '柜子', 120

select *,数量=(select sum(下单数量) from @a where 物品名称=a.物品名称 and 下单日期<=a.下单日期)from @a a
select 下单日期,AA.物品名称,下单数量 from
(select *,数量=(select sum(下单数量) from @a where 物品名称=a.物品名称 and 下单日期<=a.下单日期)from @a a) AA
where exists(select 1 from
(select 物品名称,sum(交货数量) 交货数量 from @b group by 物品名称) BB where 物品名称=AA.物品名称 and 交货数量<AA.数量)
union all
select * from @a a where not exists(select 1 from @b where 物品名称=a.物品名称 )

22,302

社区成员

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

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