[英]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.