【问题标题】:Using UNION to add column value with criteria使用 UNION 添加具有条件的列值
【发布时间】:2016-04-15 16:55:28
【问题描述】:

基本上我想将 2 个表的结果添加/组合到一个新表中,如下所示:

(如果 colA 和 colB 匹配,则将值相加,否则为原始值)

我尝试提出以下查询(在访问 VBA 中),但它提供的比我想要的多:

SELECT table1.A, table1.B, table1.C
FROM table1, table2
WHERE table1.A <> table2.A
UNION
SELECT table1.A, table1.B, table1.C+table2.C AS SUM
FROM table1, table2
WHERE table1.A = table2.A AND table1.B = table2.B
UNION
SELECT table2.A, table2.B, table2.C
FROM table1, table2
WHERE table1.A <> table2.A;

虽然它可以在 excel 中使用 vlookup 轻松完成;访问没有那么简单。使用 UNION 是否正确?另外我想坚持查询,而不是使用原始数据有 10000+ 行的记录集

【问题讨论】:

    标签: mysql ms-access vba


    【解决方案1】:
    SELECT A, B, SUM(C)
    FROM ( 
             SELECT A, B, C
             FROM Table1
             UNION ALL
             SELECT A, B, C
             FROM Table2
         ) T
    GROUP BY A, B
    ORDER BY A, B
    

    【讨论】:

    • 那是快速而完美的!谢谢!我了解 UNION ALL 部分和来自,但是从 UNION 中选择列如何给出结果? T还有什么作用? (发布后 10 分钟才能接受答复)
    • 没关系,我知道为什么它现在可以工作了,再次感谢
    • UNION 将丢弃重复的。 UNION ALL 保留重复,你可以SUMT 只是子查询的别名,因此 FROM 将其视为表
    • 感谢您的帮助!
    猜你喜欢
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    • 2017-10-24
    • 2023-01-13
    相关资源
    最近更新 更多