繁体   English   中英

来自两个表的 MS Access JOIN 列 - NOT UNION

[英]MS Access JOIN columns from two tables - NOT UNION

我需要在 MS Access 中编写一个查询,以按 2 个日期列获取操作计数。 我的表的结构是

开始日期 结束日期 f1 f2 f3
2022-12-01 2022-12-05 f1 f2 f3
2022-11-15 2022-12-07 f1 f2 f3
2022-12-06 2022-12-07 f1 f2 f3
2022-11-15 2022-12-06 f1 f2 f3

对于一个月的所有日期,我需要 output

日期 日期总 start_date 总 end_date 日期
2022-11-15 1个 0
2022-12-01 1个 0
2022-12-05 0 1个
2022-12-06 1个 1个
2022-12-07 0 2个

我所做的是(这是不正确的,因为在给定的 start_date 上有可能,计数为零,对于某些 end_date 计数为零)

SELECT start_date, count(start_date) as startcount, tbl2.endcount FROM tbl
FULL OUTER JOIN (SELECT end_date, count(end_date) as endcount FROM tbl GROUP BY end_date) as tbl2
ON start_date=tbl2.end_date
GROUP BY start_date
ORDER BY start_date

有什么建议么?

我已经检查了现有的答案,但它们不符合要求,因为在其他答案中他们正在做结果的 UNION,这不是我的问题。

我没有意识到只需要一票就可以重新打开并回答...
我在评论中写得最多,但第一种方法如下所示:

SELECT TheDate, SUM(startcount) AS TotalStart, SUM(endcount) AS TotalEnd
FROM (
    SELECT start_date as TheDate, count(*) as startcount, 0 AS endcount 
    FROM tbl
    GROUP BY start_date
    
    UNION ALL
    
    SELECT end_date as TheDate, 0 as startcount, count(*) as endcount 
    FROM tbl 
    GROUP BY end_date
)
GROUP BY TheDate

而 JJ32 是正确的,这可以简化为:

SELECT TheDate, SUM(startcount) AS TotalStart, SUM(endcount) AS TotalEnd
FROM (
    SELECT start_date as TheDate, 1 as startcount, 0 AS endcount 
    FROM tbl
    
    UNION ALL
    
    SELECT end_date as TheDate, 0 as startcount, 1 as endcount 
    FROM tbl 
)
GROUP BY TheDate

这基本上是一个 UNPIVOT 操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM