更新sql记录

时间:2015-09-27 13:44:16

标签: c# sql-server

现在我用这些列添加这些表:

DrugID, BatchNo, ManufacreDate, ExpireDate, Quantity.

注意:(DrugID, BatchNo)构成主键。

例如:有2条记录如下:

(101, 1234, 1-7-2014, 1-7-2016, 50)
(101, 7654, 1-7-2015, 1-7-2017, 80)

例如,如果一个客户想要药物中的80项药物ID = 101,我怎么能更新表格以便删除第一个记录,第二个记录将保留,但数量将被修改为30?< / p>

请帮忙吗?

1 个答案:

答案 0 :(得分:0)

解决这个问题的方法是计算每种药物的累积量。然后将累计金额与所需金额进行比较,以确定需要更新的行。

其余的是一些算术。在SQL Server 2012+中,代码如下所示:

USE [DatabaseName]
GO

DECLARE@return_value int,
@L1 nchar(10),
@L2 nchar(10),
@L3 nchar(10),
@L4 nchar(10),
@LD1 nchar(15),
@LD2 nchar(15),
@LD3 nchar(15),
@LD4 nchar(15)

EXEC@return_value = [dbo].[uspCheckTagId]
            @TagId = '10001',
            @deviceId = 'testunitid',
            @L1 = @L1 OUTPUT,
            @L2 = @L2 OUTPUT,
            @L3 = @L3 OUTPUT,
            @L4 = @L4 OUTPUT,
            @LD1 = @LD1 OUTPUT,
            @LD2 = @LD2 OUTPUT,
            @LD3 = @LD3 OUTPUT,
            @LD4 = @LD4 OUTPUT

SELECT
    @L1 as N'@L1',
    @L2 as N'@L2',
    @L3 as N'@L3',
    @L4 as N'@L4',
    @LD1 as N'@LD1',
    @LD2 as N'@LD2',
    @LD3 as N'@LD3',
    @LD4 as N'@LD4'

SELECT 'Return Value' = @return_value
GO

在早期版本中,您需要更加努力地获取累积数量,但想法是一样的。

Here是在SQL Fiddle中工作的代码(或类似的东西)的一个例子。