我有一个表格,记录了项目的所有交易细节。格式如下所示:
我正在尝试获取最后购买日期以及未返回的上次销售日期。例如,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
所以,当我提升最后购买日期时,基本上会将其删除,因为这是购买但已退回。
答案 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