我有一张桌子可以跟踪分配的物品。我拥有的主要数据是TransactionID,TransactionDateTime,PersonID,CostCentre,ProductID,TransactionType和Quantity。
我需要将此表转换为仅显示已分配和使用的项目。
现在我的问题是,在某些情况下,产品可能会被分发,比如该项目的25个,然后由于某种原因,它可能被完全或部分退回。所以要么25回来,要么15回来。结果记录需要确定分配的正确数量。
要表示退货,数量字段为负数,且TransactionType为DSPN-与标准交易的DSPN相反。
在大多数情况下,对于已分配和返回事务,TransactionID都是相同的,从而产生一个简单的Group By功能。但是我发现这种情况并非如此,并且想知道是否有另一种方法可以将这些记录组合在一起。
到目前为止我只是基本组。
SELECT dspn_id AS DspnID, SUM([Qty]) AS Qty, MIN(creationDate) AS RIO, MIN(TransactionID) AS PKey
FROM MyTable
GROUP BY dspn_id
HAVING SUM(Qty) > 0
标准情况的示例数据,我可以通过dspn_id进行分组:
dspn_id creationDate PersonID CostCenter ProdID TranType QTY
972490 2012-10-08 12:14:46.440 984254875 CostCC1 4591 DSPN 25
972487 2012-10-08 12:14:46.463 984254875 CostCC1 1017 DSPN 30
972490 2012-10-08 12:15:24.270 984254875 CostCC1 4591 DSPN- -25
972487 2012-10-08 12:15:38.990 984254875 CostCC1 1017 DSPN- -30
972496 2012-10-08 12:15:51.490 984254875 CostCC1 4591 DSPN 25
972497 2012-10-08 12:15:51.500 984254875 CostCC1 1017 DSPN 30
我的问题所在的示例数据:
dspn_id creationDate PersonID CostCenter ProdID TranType QTY
962376 2012-09-21 16:01:03.783 123456789 CostCC2 18007 DSPN 2
962998 2012-09-24 09:31:20.433 123456789 CostCC2 18007 DSPN- -1
我可以简单地按CostCenter和ProdID分组,但这不是我之后的解决方案。理想情况下,在上述情况下,我会为ProdID 18007创建一条记录,显示日期为2012-09-21 16:01:03.783,数量为1.即使将相同的ProdID分配给具有该CostCentre的PersonID。