【问题标题】:How to combine 2 select statements in MS Access?如何在 MS Access 中组合 2 个选择语句?
【发布时间】:2016-03-15 16:45:55
【问题描述】:

我有一个简单的 SELECT 结合 INSERT INTO 输出表,它工作正常,但现在我必须选择具有不同 WHERE 子句的部分数据并且不知道如何组合它。

源数据表有这样的列: 日期、ID、销售额、Cor1、Cor2、Cor3、Cor4

然后我有“过滤器”表定义 ID 和日期的组合格式: ID、开始日期、结束日期

原来的查询是这样的:

INSERT INTO sales_export ( ID, Sales, Cor1, Cor2, Cor3, Cor4 )
SELECT Tsales.ID, Sum(Tsales.Sales) AS Sales, Sum(Tsales.Cor1) AS Cor1, Sum(Tsales.Cor2) AS Cor2, Sum(Tsales.Cor3) AS Cor3, Sum(Tsales.Cor4) AS Cor4
FROM Tsales, Tfilter
WHERE (((Tsales.ID)=Tfilter.ID) And ((Tsales.Date) Between Tfilter.Start_date And Tfilter.End_date))
GROUP BY Tsales.ID

但是现在条件发生了变化,除 Cor3 之外的所有字段都有相同的日期,所以我需要对 Cor3 和所有其他字段进行单独的 SELECT,然后将其组合并插入到导出表中。

有什么想法吗?我尝试使用 UNION 和 JOIN 进行 2 个选择,但由于我无法弄清楚的语法错误,它无法正常工作。

谢谢

【问题讨论】:

  • 发布您尝试使用UNION/JOIN的查询
  • UNION 是正确的方法,因此请向我们展示您尝试过但失败的查询
  • UNION 不起作用,因为它说表中的列数不匹配,如果我正确理解 UNION 函数,这是必须的。如果无法弄清楚,我将尝试使用 JOIN 并发布我的尝试。另一个问题是列的顺序必须相同,所以我可能需要 3 个查询才能这样做。
  • 在我创建了第二个表时,我开始在更改后填充数据,然后使用 UNION 将它们放在一起。感谢所有试图提供帮助的人。

标签: sql ms-access


【解决方案1】:

尝试用 ID 再加入一个 Tsales 表(如果 ID 是唯一的) 你的代码应该是这样的:

INSERT INTO sales_export ( ID, Sales, Cor1, Cor2, Cor3, Cor4 )
SELECT T1.ID, Sum(T1.Sales) AS Sales, Sum(T1.Cor1) AS Cor1, Sum(T1.Cor2) AS Cor2, Sum(T2.Cor3) AS Cor3, Sum(T1.Cor4) AS Cor4
FROM ((Tsales T1) JOIN Tfilter T2 ON T1.ID = T2.ID) LEFT JOIN Tsales T3 ON T1.ID = T3.ID AND T3.Date BETWEEN [Your New Date1] AND [Your New Date2]
WHERE ((T1.Date) Between T2.Start_date And T2.End_date))
GROUP BY T1.ID

【讨论】:

    猜你喜欢
    • 2013-10-09
    • 1970-01-01
    • 2020-07-21
    • 2018-05-10
    • 2017-06-15
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多