【问题标题】:How do I merge 2 table in 1 and change value from the second table to negative value before merge如何在 1 中合并 2 个表并在合并前将第二个表中的值更改为负值
【发布时间】:2022-01-02 00:56:19
【问题描述】:

表 1:

TheName TheVal1
Blue 2
Red 8
Orange 6
Green 13
Blue 14
Green 25

表 2:

TheName TheVal2
Blue 9
Red 30
Pink 8
Green 10
Blue 3
Green 2

输出除外:

TheName TheVal
Blue 4
Red -22
Pink -8
Green 26
Orange 6

计算详情:

Blue = (2+14)-(9+3) = 4
Red = (8)-(30) = -22
Pink = (0)-(8) = -8
Green = (13+25)-(10+2) = 26
Orange = (6)-(0) = 6

我所做的尝试:

所以基本上我的查询应该执行以下操作:

SELECT TheName,SUM(TheVal1) - (SELECT TheName,SUM(TheVal2) FROM Table2 GROUP BY TheName) FROM Table1 GROUP BY TheName 

但这会引发以下错误:

您编写的子查询可以返回多个字段,而无需在主查询的 FROM 子句中使用 EXISTS 保留字。修改子查询的 SELECT 语句,只请求一个字段

我认为我必须将两个表合并为 1 并将新值转换为负值,所以这应该给出下表:

TheName TheVal
Blue 2
Red 8
Orange 6
Green 13
Blue 14
Green 25
Blue -9
Red -30
Pink -8
Green -10
Blue -3
Green -2

然后只需执行以下 SQL 代码:

SELECT TheName,SUM(TheVal) FROM NewMergedTable GROUP BY TheName

有人可以帮我解决这个问题吗?

请注意,我正在开发 ACCESS

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    您可以将 select from suquery 与 union 一起使用

    select TheName, sum(TheVal) 
    from (
    
        select TheName, sum(TheVal1) TheVal
        from table1 
        group by TheName 
        UNION 
        select TheName, -1*sum(TheVal2)
        from table2 
        group by TheName 
    
    )    t group by TheName 
    

    【讨论】:

    • 已针对新列名称更新答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 2022-06-13
    • 1970-01-01
    相关资源
    最近更新 更多