【发布时间】:2018-02-05 12:23:47
【问题描述】:
首先,如果这个问题已经得到解答,我想道歉,但我无法通过搜索找到任何与我的问题相关的有用信息,因为我不知道问题的确切名称。
首先,我有这些表:
表 A:
ID | Title | many more fields
------------------------------
1 | title1 | ....
2 | title2 | ....
...
表 B:
ID | project_ID | Date B | many more fields
-------------------------------------------
1 | 1 | 01.01.2017
2 | 1 | 01.02.2017
3 | 1 | 01.03.2017
4 | 2 | 02.01.2017
5 | 1 | 01.05.2017
6 | 3 | 01.03.2017
...
表 C:
ID | project_ID | Date C | many more fields
-------------------------------------------
1 | 1 | 01.01.2017
2 | 2 | 03.04.2017
3 | 2 | 11.10.2017
4 | 3 | 05.01.2017
5 | 1 | 06.02.2017
6 | 2 | 07.08.2017
...
表 D:
ID | project_ID | Date D | many more fields
-------------------------------------------
1 | 1 | 02.02.2017
2 | 2 | 03.03.2017
3 | 3 | 11.11.2017
4 | 1 | 04.04.2017
5 | 1 | 06.06.2017
6 | 2 | 07.07.2017
...
我的目标是一个看起来像这样的报告:
Title1
-------------------------------------------
Date B | Date C | Date D
01.01.2017 | 01.01.2017 | 03.03.2017
01.02.2017 | 06.02.2017 | 04.04.2017
01.03.2017 | | 06.06.2017
01.05.2017 |
Title2
-------------------------------------------
Date B | Date C | Date D
02.01.2017 | 03.04.2017 | 02.02.2017
| 11.10.2017 | 07.07.2017
| 07.08.2017
...
最好的结果是使用“Access Report Builder”,我得到了类似的东西:
Date B | Date C | Date D | Misc
01.09.2017 | 28.08.2017 | 24.08.2017 | Title 1
01.09.2017 | 28.08.2017 | 25.08.2017 | Title 1
01.09.2017 | 28.08.2017 | 26.08.2017 | Title 1
01.09.2017 | 29.08.2017 | 24.08.2017 | Title 1
01.09.2017 | 29.08.2017 | 25.08.2017 | Title 1
01.09.2017 | 29.08.2017 | 26.08.2017 | Title 1
但正如您所见,它重复了不应该发生的日期。即使隐藏重复项,它也只会隐藏它们。日期 D 仍会显示重复。
上周我什至得到了这样的东西:
SQL:
SELECT
P.ID,
P.title,
P_kov.ko_date AS dateKOV,
CVAR(NULL) AS dateAP,
CVAR(NULL) AS dateEP
FROM
P
LEFT JOIN
P_kov ON P.ID = P_kov.id_projekt
UNION
SELECT
P.ID,
P.title,
CVAR(NULL) AS dateKOV,
CVAR(NULL) AS dateAP,
P_ep.ep_date AS dateEP
FROM
P
LEFT JOIN
P_ep ON P.ID = P_ep.id_projekt
UNION
SELECT
P.ID,
P.title,
CVAR(NULL) AS dateKOV,
P_ap.ap_date AS dateAP,
CVAR(NULL) AS dateEP
FROM
P
LEFT JOIN
P_ap ON P.ID = P_ap.id_projekt;
注意:我使用了 CVAR,因为似乎 Date 不能为 NULL
结果:
Date KOV | Date AP | Date EP | title
01.09.2017 | | | Title 1
02.09.2017 | | | Title 1
| 28.08.2017 | | Title 1
| 29.08.2017 | | Title 1
| | 25.08.2017 | Title 1
| | 26.08.2017 | Title 1
但遗憾的是,报告将每个空白字段都打印为新行。而且我在 VBA 方面的技能也不是很好,我无法弄清楚如何将结果放入数组并将“清理”的值放入文本字段中。
TLDR:我需要一个 SQL 查询,它可以让我得到我想要的报告,或者一种在 VBA 中通过操纵数据字段来处理多个数据源的方法
【问题讨论】:
-
为什么要尝试在单个报告中执行此操作?您可以只基于 TableA 创建一个报表,并为 TableB、TableC 和 TableD 添加子报表。这可以生成所需的输出,而无需编写困难的 SQL 查询。
-
你好,Erik,这就是tipp - 我试过了,在发现报告的分组是如何工作的(codenovice 的评论也有帮助)你的带有子报告的tipp 就像一个魅力 - 非常感谢
标签: sql arrays sorting ms-access ms-access-2010