注册 登录
编程论坛 SQL Server论坛

请教一个删除单条数据的存储过程

zhouyulv 发布于 2008-05-12 15:25, 971 次点击
表A是单头:
id,店名,   日期       ,            应收金额, 实收金额
01  001  2004-12-26 10:54:37.000     10       10
02  001  2004-12-26 11:54:37.000     11       10
03  002  2004-12-26 12:54:37.000     12       12

----------------------------------------------------

表B是明细表:
id   商品编码   销售数量    销售价          实收金额
01    1001       1           10                   10
02    1002       1            5.5                5.5
02    1003       1            5.5                5.5
03    1004       1           12                  12
--------------------------------------------- ----------------
我现在想把商品编码为:1003的删除..然后把表A中的应收金额和实收金额更新成删除后的金额.还要加一个日期条件..日期> dateadd(day,-1,getdate())
6 回复
#2
zhouyulv2008-05-12 15:31
高手请帮忙指点下..
#3
happynight2008-05-12 15:49
表A和表B是通过什么关联?是ID吗
#4
happynight2008-05-12 15:56
写了下 没测试 时间比较急,错误处理请自己搞定
BEGIN TRAN
    DECLARE @Var AS VARCHAR(10)

    UPDATE A SET 应收金额=应收金额 - 应收金额1,实收金额=实收金额 - 实收金额1  
    FROM  (SELECT [id],SUM(销售数量 * 销售价格) 应收金额1,SUM(实收金额) AS 实收金额1 WHERE 商品编码=@Var GROUP BY [ID]) AS C
    WHERE  A.[ID]=C.[ID] AND A.日期> dateadd(day,-1,getdate())

    DELETE B FROM B INNER JOIN A ON B.[ID]=A.[ID] WHERE  A.日期> dateadd(day,-1,getdate()) AND 商品编码=@Var
   
COMMIT TRAN
#5
zhouyulv2008-05-12 16:01
[bo]以下是引用 [un]happynight[/un] 在 2008-5-12 15:56 的发言:[/bo]

写了下 没测试 时间比较急,错误处理请自己搞定
BEGIN TRAN
    DECLARE @Var AS VARCHAR(10)

    UPDATE A SET 应收金额=应收金额 - 应收金额1,实收金额=实收金额 - 实收金额1  
    FROM  (SELECT ,SUM(销售数量  ...

@Var这个不清楚..因为我要删除的商品编码是有要求的..10003
#6
happynight2008-05-12 16:53
@Var是一个变量,之所以使用变量,就是为了比较灵活点,因为你要写存储过程的话,目的就是重复使用,使用这个可以用来删除不同的商品而不只是为了一次性的删除10003而下次又要修改程序
#7
zhouyulv2008-05-13 14:35
多谢..搞定了..
1