gpt4 book ai didi

sql - SUM 聚合函数和子查询 -SQL

转载 作者:行者123 更新时间:2023-12-04 06:21:02 25 4
gpt4 key购买 nike

我正在使用 MS SQL Server,我有 2 个表。

供应 list

sl_id(pk) supply_id(fk)*       transaction_id    Qty 
1 14 872670099 3
2 15 872670100 5
3 16 872670101 1
4 16 872670105 4 <
  • supply_id 是 amenity 表中 supply_id 的外键

  • 供应
    supply_id(pk)    no_of_units 
    ----------------------------
    13 2
    14 3
    15 6
    16 10

    输出应该是 supply_id 然后是 no。可用单位数等于 No_of_units 减去数量。

    输出
    id      units available 
    -------------------------
    13 2
    14 0 --> [1]
    15 1
    16 5 --> [2]

    [1] 由于基于 supply_list 表 supply_id 14 的数量为 3

    [2] 有两条记录包含 supply_id 16,所以我们必须添加它们的数量,它们是 4 和 1,所以我们有 5。从 supply_id 16 的 no_of_units 中减去 5,我们将得到 5 可用单位。

    最佳答案

  • 您将列表表的外部连接到父表
  • 从父 no_of_units 值中减去列表 Qty 值的 SUM
  • 如果没有列表行,请使用 ISNULL

  • 就像是
    SELECT
    S.supply_id,
    S.no_of_units - ISNULL(SUM(SL.Qty), 0) AS [units available]
    FROM
    supply S
    LEFT JOIN
    supply_list SL ON S.supply_id = SL.supply_id
    GROUP BY
    S.supply_id, S.no_of_units

    这使得聚合更加明显,但是是相同的查询
    SELECT
    S.supply_id,
    S.no_of_units - ISNULL(SL.SumListQty, 0) AS [units available]
    FROM
    supply S
    LEFT JOIN
    (
    SELECT supply_id, SUM(Qty) AS SumListQty
    FROM supply_list
    GROUP BY supply_id
    ) SL ON S.supply_id = SL.supply_id

    关于sql - SUM 聚合函数和子查询 -SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6564724/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com