Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 连接两个表,求和并按分组_Sql_Join_Group By_Sum - Fatal编程技术网

Sql 连接两个表,求和并按分组

Sql 连接两个表,求和并按分组,sql,join,group-by,sum,Sql,Join,Group By,Sum,应该相当简单,但我是SQL新手,无法让它工作: Table 1: ID Qty ItemA 3 ItemB 5 ItemD 2 Table 2: ID Qty ItemC -1 ItemB 1.5 ItemE 2.2 我只需要一个表,表中的数量按ID求和。如下所示: SELECT ID, SUM(Qty) SumQty FROM ( SELECT ID, Qty FROM Table1 UNIO

应该相当简单,但我是SQL新手,无法让它工作:

Table 1:
ID        Qty
ItemA     3 
ItemB     5  
ItemD     2 

Table 2:
ID        Qty
ItemC    -1
ItemB    1.5 
ItemE     2.2
我只需要一个表,表中的数量按ID求和。

如下所示:

SELECT ID, SUM(Qty) SumQty
FROM
(
    SELECT ID, Qty FROM Table1
    UNION ALL
    SELECT ID, Qty FROM Table2
) A
GROUP BY ID

这将对
数量
字段求和,并按ID分组:

SELECT
    a.ID AS id,
    (SUM(a.Qty) + SUM(b.Qty)) as qty_sum
FROM
    [Table 1] as a
        JOIN
    [Table 2] as b ON (a.ID = b.ID)
GROUP BY 1;
您应从本示例中了解的关键部分包括:

  • JOIN
    这就是两个表的连接方式。请注意,它通过`ON(a.ID=b.ID)确保两个表中的ID匹配
  • 使用
    SUM
    函数获取总数
  • 分组依据
    分组

  • 与@patsweet类似,但使用内部连接,格式更易于阅读

    SELECT  SUM(t1.Qty + t1.Qty) AS TotalQty ,
            t1.ID
    FROM    [Table 1] t1
            INNER JOIN [Table 2] t2 WITH (NOLOCK) ON t2.ID = t1.ID
    GROUP BY t1.ID
    

    你能澄清一下你的专栏是什么吗?当前的标记不太清楚。您能告诉我们您尝试了什么,以及您想要的输出吗?“表1”和“表2”对于表来说确实不是有用的名称。为什么有两个表显然表示完全相同的数据类型?忘记添加“按id分组”