表A分类号 金额 数量
01.00 00.00 0 更新后该行金额为500.00,数量为46
01.01 100.00 10
01.02 200.00 21
01.03 200.00 15
02.00 00.00 0 更新后该行金额为475.00,数量为37
02.01 130.00 12
02.02 122.00 10
02.03 123.00 10
02.04 100.00 5
03.00……
现在要求更新分类号末位为00的行,值为该类的汇总
即如果该行分类号为01.00
更新该行金额值为 sum(金额) from 表A where 分类号 like '01.%'
更新该行数量值为 sum(数量) from 表A where 分类号 like '01.%'
依此类推到02.00,03.00……不知道能不能用简单的语句实现。
谢谢各位!
01.00 00.00 0 更新后该行金额为500.00,数量为46
01.01 100.00 10
01.02 200.00 21
01.03 200.00 15
02.00 00.00 0 更新后该行金额为475.00,数量为37
02.01 130.00 12
02.02 122.00 10
02.03 123.00 10
02.04 100.00 5
03.00……
现在要求更新分类号末位为00的行,值为该类的汇总
即如果该行分类号为01.00
更新该行金额值为 sum(金额) from 表A where 分类号 like '01.%'
更新该行数量值为 sum(数量) from 表A where 分类号 like '01.%'
依此类推到02.00,03.00……不知道能不能用简单的语句实现。
谢谢各位!
解决方案 »
- 一条简单的sql语句转为Mysql.....大哥们看看~~~~~~~~~~~~急
- 怎样通过查询表知道特定表的信息,包括字段名,长度,类型,主键?
- 如何用SQL语句移动列的顺序!?
- 数据发布的问题?
- 怎么在 win2000 Professional 安装 sql server 2000
- 请教一下SQL中某列项如何自动编号!
- SQL服务自动关闭
- 大家好,能简单的教教说说触发器要怎么写好吗?
- 【急,在线等】 问大家一个简单的SQL 查询语句,内详
- 错误信息: "Exception EDBEninerror in moudle...未装载DB-Library 网络通信层 General SQL Server alias:jnztb"
- 问:len()不支持ntext,我想取ntext字段的长度,该怎么写?
- 如何识别数据库是非系统数据库
set
金额=(select sum(金额) from tb where left(分类号,len(分类号)-2)=left(a.分类号,len(a.分类号)-2) ),
数量=(select sum(数量) from tb where left(分类号,len(分类号)-2)=left(a.分类号,len(a.分类号)-2) )
from tb a
where right(分类号,2)='00'
数量=(select sum(数量) from 表a as b where left(b.分类号,3)=left(a.分类号,3) and right(分类号,2)<>'00')
from 表a as a
where right(分类号,2)='00'
CREATE TABLE T_PRICE
(
SORT_NO CHAR(5),
MONEY_1 MONEY,
QTY INT)insert into T_PRICESELECT '01.00', 00.00, 0 UNION ALL -- 更新后该行金额为500.00,数量为46
SELECT '01.01', 100.00 , 10 UNION ALL
SELECT '01.02', 200.00 , 21 UNION ALL
SELECT '01.03', 200.00, 15 UNION ALL
SELECT '02.00', 00.00 , 0 UNION ALL --- 更新后该行金额为475.00,数量为37
SELECT '02.01', 130.00 , 12 UNION ALL
SELECT '02.02', 122.00, 10 UNION ALL
SELECT '02.03', 123.00, 10 UNION ALL
SELECT '02.04', 100.00, 5
UPDATE T_PRICE
SET T_PRICE.QTY =
( SELECT SUM(B.QTY) FROM T_PRICE B
WHERE LEFT(LTRIM(T_PRICE.SORT_NO),2) =LEFT(LTRIM(B.SORT_NO),2)
GROUP BY LEFT(LTRIM(B.SORT_NO),2)
),
T_PRICE.MONEY_1 =
( SELECT SUM(B.MONEY_1) FROM T_PRICE B
WHERE LEFT(LTRIM(T_PRICE.SORT_NO),2) =LEFT(LTRIM(B.SORT_NO),2)
GROUP BY LEFT(LTRIM(B.SORT_NO),2)
)FROM T_PRICE
WHERE RIGHT(RTRIM(T_PRICE.SORT_NO),2) = '00'
SET T_PRICE.QTY =
( SELECT SUM(B.QTY) FROM T_PRICE B
WHERE LEFT(LTRIM(T_PRICE.SORT_NO),2) =LEFT(LTRIM(B.SORT_NO),2)
AND RIGHT(RTRIM(B.SORT_NO),2) <> '00'
),
T_PRICE.MONEY_1 =
( SELECT SUM(B.MONEY_1) FROM T_PRICE B
WHERE LEFT(LTRIM(T_PRICE.SORT_NO),2) =LEFT(LTRIM(B.SORT_NO),2)
AND RIGHT(RTRIM(B.SORT_NO),2) <> '00'
)
FROM T_PRICE
WHERE RIGHT(RTRIM(T_PRICE.SORT_NO),2) = '00'