现在我用这些列添加这些表:
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>
请帮忙吗?
答案 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中工作的代码(或类似的东西)的一个例子。