代码之家  ›  专栏  ›  技术社区  ›  Koosh

查询以仅提取列中没有相应负值的记录

  •  0
  • Koosh  · 技术社区  · 7 年前

    我有一张近50万张唱片的桌子。这是一个用户将添加特定记录的地方,在本例中,它是一个优惠券。当它被添加时,它有一个正的“1”值,但是当这个优惠券被使用时,它得到的是一个“-1”值。还有一个场景,如果使用的优惠券被返回,它将在我的系统中无效,并将值更改为“1”。

    这是一个简化的结构:

    CouponID    CouponVendorID   CouponValue       CouponQty    Action  Barcode
    1           117             25.00             1            Add      11112
    2           117            -25.00            -1            Use      11112
    3           117             25.00             1            Void     11112
    4           117             17.00             1            Add      33331
    5           117             90.00             1            Add      44441
    6           117             5.00              1            Add      42424
    7           117            -5.00             -1            Use      42424
    

    所以我要做的是找到所有的卡(Couponid会做),因为我还有一张有效的优惠券。

    我可以通过这个查询获得有效优惠券的正确计数(couponqty)

    select 'Avail'= sum(couponQty) from tblA where CouponVendorID = 117
    

    但是,我很难找到详细的记录来显示哪些优惠券实际上包含在有效优惠券的计数中。有什么想法吗?

    预期最终结果:

    CouponID    CouponVendorID   CouponValue       CouponQty    Action  Barcode
    1           117             25.00             1            Add      11112
    4           117             17.00             1            Add      33331
    5           117             90.00             1            Add      44441
    

    Couponid=1,被添加,然后使用,然后作废,所以它仍然有效。couponid=4仅添加,从未使用,与couponid=5相同。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Koosh    7 年前

    这就是我想出的办法。

    SELECT CouponVendorId, Barcode, 'CpnQty' = Sum(CouponQty)From tblA
    GROUP BY CouponVendorId, Barcode 
    HAVING CouponVendorId = 117 AND SUM(CouponQty) > 0