有表Aid money
1 300
1 200
2 500
3 400
3 600我想更新这张表让 id=1 的总和为30
应得到:
id money
1 30
1 0
2 500
3 400
3 600怎么写SQL........
1 300
1 200
2 500
3 400
3 600我想更新这张表让 id=1 的总和为30
应得到:
id money
1 30
1 0
2 500
3 400
3 600怎么写SQL........
解决方案 »
- 先别管写的对错,就说这种思路对吗?我是想不出来什么好办法?又要读取子类下所有相关记录,还要番页处理,EXEC 来执行,乱了。帮帮忙!
- 如何根据已知以“|”号分隔的字符串,进行相关文章的查询。
- 返回不了值 了?乍回事呢?
- 谁给推荐点SQLSever2005的学习资料??
- 基于JAVA技术的网页标准数据库的构建
- 幫忙看看這個問題?(SQL怎么達到)
- 去掉所有的值全是NULL的列,并将aa列相同的放在同一行,重复的列只保留一列
- 问个关于考勤表的问题
- index作用?
- !!百分求方案,我租用的是一个小型服务器,提供ACCESS数据库服务,我要。。。。。
- 越做越复杂的一个sql语句 求大神
- 抓取数据表创建语句
SET MONEY=30
WHERE ID=1 AND MONEY=300UPDATE A
SET MONEY=0
WHERE ID=1 AND MONEY=200
SET MONEY=30
WHERE ID=1 AND MONEY=300 UPDATE A
SET MONEY=0
WHERE ID=1 AND MONEY=200
你这样写是死的
更本就不是行只是为了的到结果而写死
1 30
1 0
2 500
3 400
3 600
后面还有个ID 1 值是0
你的意思是 把300 变成30 和 0?
1001 50
1001 100
1002 400
现在1001的库存出库了90,那1001还剩下的库存就应该为60也就是id money
1001 60
1001 0
1002 400
insert into A
SELECT 1001 ,50
UNION
SELECT 1001 ,100
UNION
SELECT 1002 ,400
GOSELECT * FROM ADECLARE @NUM INT,@RNUM INT
DECLARE @ID INT,@MONEY INTSET @NUM=90
SET @RNUM=@NUM
declare t_cursor cursor for
select id,MONEY
FROM A
WHERE ID=1001
ORDER BY MONEY OPEN t_cursor
FETCH NEXT FROM t_cursor INTO @id, @MONEY
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @id, @MONEY
SELECT @RNUM SET @RNUM=@RNUM-@MONEY IF(@RNUM>0)
BEGIN
UPDATE A SET MONEY=0 WHERE ID=@id AND MONEY=@MONEY
END
ELSE
BEGIN
UPDATE A SET MONEY=ABS(@RNUM) WHERE ID=@id AND MONEY=@MONEY
END
--
FETCH NEXT FROM t_cursor INTO @id, @MONEY
END
CLOSE t_cursor
DEALLOCATE t_cursorGOSELECT * FROM AGO
drop table a
GO
insert into A
SELECT 1001 ,50
UNION
SELECT 1001 ,100
UNION
SELECT 1002 ,400
GOSELECT * FROM ADECLARE @NUM INT,@RNUM INT
DECLARE @ID INT,@MONEY INTSET @NUM=90
SET @RNUM=@NUM
declare t_cursor cursor for
select id,MONEY
FROM A
WHERE ID=1001
ORDER BY MONEY OPEN t_cursor
FETCH NEXT FROM t_cursor INTO @id, @MONEY
WHILE @@FETCH_STATUS = 0
BEGIN
-- SELECT @id, @MONEY
--
-- SELECT @RNUM
--
SET @RNUM=@RNUM-@MONEY IF(@RNUM>0)
BEGIN
UPDATE A SET MONEY=0 WHERE ID=@id AND MONEY=@MONEY
END
ELSE
BEGIN
UPDATE A SET MONEY=ABS(@RNUM) WHERE ID=@id AND MONEY=@MONEY
END
--
FETCH NEXT FROM t_cursor INTO @id, @MONEY
END
CLOSE t_cursor
DEALLOCATE t_cursorGOSELECT * FROM AGO
drop table a
GO忘记屏蔽调试了,接分!