SQL请教一个较难的问题!

xiaojiaoduo 2012-10-10 10:07:23
比如有个表 有编码,销售价格,剩余价格,和数量
item_code,trx_price,adj_price,qty
001, 20,0,10
002,30,0,58
003,89,0,56
004,23,0,17

现在根据一个变量a给adj_price赋值 如果a 大于第一条记录的Trx_price 则adj_price为0
否则adj_price=a-trx_price 并把结果重新赋值给a 与下一条比较!

比如输了55
得到
item_code,trx_price,adj_price,qty
001, 20,0,10
002,30,0,58
003,89,5,56
004,23,0,17





...全文
147 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaojiaoduo 2012-10-10
  • 打赏
  • 举报
回复
谢谢楼主哈!我现在没分啊,下次的了就给你哈!呵呵……谢谢哈
汤姆克鲁斯 2012-10-10
  • 打赏
  • 举报
回复
--> 测试数据:[tb]
IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb]
GO
CREATE TABLE [tb]([item_code] VARCHAR(3),[trx_price] INT,[adj_price] INT,[qty] INT)
INSERT [tb]
SELECT '001',20,0,10 UNION ALL
SELECT '002',30,0,58 UNION ALL
SELECT '003',89,0,56 UNION ALL
SELECT '004',23,0,17
--------------开始查询--------------------------
DECLARE @a INT =55
UPDATE TOP (1) t SET [adj_price] = @a-(SELECT SUM([trx_price]) FROM [tb] WHERE [item_code]<t.[item_code])
FROM [tb] AS t
WHERE @a<=(SELECT SUM([trx_price]) FROM [tb] WHERE [item_code]<=t.[item_code])

SELECT * FROM [tb]

----------------结果----------------------------
/*
item_code trx_price adj_price qty
001 20 0 10
002 30 0 58
003 89 5 56
004 23 0 17
*/
xiaojiaoduo 2012-10-10
  • 打赏
  • 举报
回复
5=55-第一行的20-第二行的30 得到的
  • 打赏
  • 举报
回复
没看懂你那个5怎么计算来的
汤姆克鲁斯 2012-10-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

谢谢楼主哈!我现在没分啊,下次的了就给你哈!呵呵……谢谢哈
[/Quote]
你点结贴按钮,结贴便可以了
發糞塗牆 2012-10-10
  • 打赏
  • 举报
回复
楼主谢谢楼主?

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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