删除并跟踪购买和退回的物品

时间:2015-07-15 13:02:35

标签: sql-server sql-server-2008

我有一个表格,记录了项目的所有交易细节。格式如下所示:

  • 项目
  • 交易类型(销售,购买,供应商退货,销售退货)
  • 更改说明(详细信息和OrderNumber)
  • 数量已添加
  • 已减去数量

我正在尝试获取最后购买日期以及未返回的上次销售日期。例如,2015年5月15日在OrderNumber 1256上购买了144件商品,第二天有一笔交易,订单号为1256.我不知道如何处理这个问题。我是否会创建另一个已返回(True或False)的列,然后更新该列,具体取决于是否存在与此关联的返回? 这是通过存储过程还是简单查询实现的?

以下是示例数据:

Item   TransactionDate TransactionType ChangeDescription            AdditionQty    SubtractionQty
1006     2015-05-27    VENDOR RETURN       RETURN NO. 423      0             -144
1006     2015-05-28    PURCHASE            PURCH NO. 423              144               0

所以,当我提升最后购买日期时,基本上会将其删除,因为这是购买但已退回。

1 个答案:

答案 0 :(得分:0)

使用临时表:

select Item, TransactionDate, LEFT(ChangeDescription,3) as TransType, RIGHT(a.ChangeDescription,LEN(a.ChangeDescription)-(CHARINDEX('.',a.ChangeDescription) + 1) as OrderNo
into #temp
from [table]

SELECT a.Item,MAX(a.TransactionDate),a.TransType,a.OrderNo
FROM #temp a
INNER JOIN #temp b
ON a.OrderNo = b.OrderNo AND a.TransType <> b.TransType
GROUP BY a.TransType