代码之家  ›  专栏  ›  技术社区  ›  S-E-RYS

SQL显示清单更新

  •  0
  • S-E-RYS  · 技术社区  · 8 年前

    我有一个表,其中显示了库存的所有更新:

    ╔══════════════╦════════╦══════════╦═══════╗
    ║   ItemName   ║  Type  ║ Quantity ║ Date  ║
    ╠══════════════╬════════╬══════════╬═══════╣
    ║ BottledWater ║ Add    ║       50 ║ 07/03 ║
    ║ BottledWater ║ Deduct ║       20 ║ 07/03 ║
    ║ Chips        ║ Add    ║       30 ║ 07/02 ║
    ║ BottledWater ║ Deduct ║       10 ║ 07/02 ║
    ║ Chips        ║ Deduct ║       20 ║ 07/01 ║
    ╚══════════════╩════════╩══════════╩═══════╝
    

    ╔══════════════╦═══════╦══════════╗
    ║   ItemName   ║ Added ║ Deducted ║
    ╠══════════════╬═══════╬══════════╣
    ║ BottledWater ║    50 ║       30 ║
    ║ Chips        ║    30 ║       20 ║
    ╚══════════════╩═══════╩══════════╝
    

    有什么想法吗?

    2 回复  |  直到 8 年前
        1
  •  0
  •   Gordon Linoff    8 年前

    只需使用条件聚合:

    select item,
           sum(case when type = 'Add' then quantity else 0 end) as added,
           sum(case when type = 'Deduct' then quantity else 0 end) as deducted
    from inventory
    group by item;
    
        2
  •  0
  •   lf215    8 年前

    语法有点不正确,但这是伪代码:

    select ItemName, sum(Type==add) as added, sum(Type==deduct) as deducted, from inventory group by ItemName