【发布时间】:2016-10-20 13:40:06
【问题描述】:
基本上,我正在尝试统计所有在 1 个月、2 个月、3 个月内以及超过特定安全课程到期日期的员工。所有四个查询都从同一组表中提取数据。
到目前为止,我已经为一个条件创建了一个查询,并为每个日期范围复制了它。返回的数据集类似如下:
公司 |前 | -------------- 极致 | 27 | 巴克梅 | 87 | 电子数据中心 | 21 | ...我现在要做的是将它们组合起来,以便我有一个返回如下数据集的查询。
公司 |前 | M1 | M2 | M3 | ----------------------------------------- 极致 | 27 | 32 | 76 | 40 | 巴克梅 | 87 | 12 | 33 | 76 | 电子数据中心 | 21 | 44 | 65 | 87 |我已经尝试创建一个联合,但没有得到我想要的结果,我也一直在尝试在子查询中创建一个内部连接。
但是,我真的不知道我在做什么。我将不胜感激任何帮助解决这个问题谢谢!
根据以下建议,我能够构建这个超级查询!而且效果很好。
<pre>
SELECT
Q0.CN,
Q0.EX,
Q1.M1,
Q2.M2,
Q3.M3
FROM
(((((
SELECT
Companies.[Company Name] AS [CN],
Count(Companies.[Company Name]) AS [EX]
FROM
(SELECT
Companies.[Company Name]
FROM
Courses INNER JOIN
((Companies INNER JOIN
Candidates ON
Companies.[ID] = Candidates.[Company ID]) INNER JOIN
[Individual Candidate Course History] ON
Candidates.[ID] = [Individual Candidate Course History].[Candidate ID]) ON
Courses.[ID] = [Individual Candidate Course History].[Course ID]
WHERE
(([Individual Candidate Course History].[Valid Until])<Date())
ORDER BY
[Individual Candidate Course History].[Valid Until])
GROUP BY
Companies.[Company Name]) AS Q0 LEFT JOIN
(SELECT
Companies.[Company Name] AS [CN],
Count(Companies.[Company Name]) AS M1
FROM
(SELECT
Companies.[Company Name]
FROM
Courses INNER JOIN
((Companies INNER JOIN
Candidates ON
Companies.[ID] = Candidates.[Company ID]) INNER JOIN
[Individual Candidate Course History] ON
Candidates.[ID] = [Individual Candidate Course History].[Candidate ID]) ON
Courses.[ID] = [Individual Candidate Course History].[Course ID]
WHERE
((([Individual Candidate Course History].[Valid Until])
Between Date() And DateAdd("m",1,Date())))
ORDER BY
[Individual Candidate Course History].[Valid Until])
GROUP BY
Companies.[Company Name]) AS Q1 ON
Q0.CN = Q1.CN) LEFT JOIN
(SELECT
Companies.[Company Name] AS [CN],
Count(Companies.[Company Name]) AS M2
FROM
(SELECT
Companies.[Company Name]
FROM
Courses INNER JOIN
((Companies INNER JOIN
Candidates ON
Companies.[ID] = Candidates.[Company ID]) INNER JOIN
[Individual Candidate Course History] ON
Candidates.[ID] = [Individual Candidate Course History].[Candidate ID]) ON
Courses.[ID] = [Individual Candidate Course History].[Course ID]
WHERE
((([Individual Candidate Course History].[Valid Until])
Between DateAdd("m",1,Date()) And DateAdd("m",2,Date())))
ORDER BY
[Individual Candidate Course History].[Valid Until])
GROUP BY
Companies.[Company Name]
ORDER BY
Companies.[Company Name]) AS Q2 ON
Q0.CN = Q2.CN) LEFT JOIN
(SELECT
Companies.[Company Name] AS [CN],
Count(Companies.[Company Name]) AS M3
FROM
(SELECT
Companies.[Company Name]
FROM
Courses INNER JOIN
((Companies INNER JOIN
Candidates ON
Companies.[ID] = Candidates.[Company ID])
INNER JOIN [Individual Candidate Course History] ON
Candidates.[ID] = [Individual Candidate Course History].[Candidate ID]) ON
Courses.[ID] = [Individual Candidate Course History].[Course ID]
WHERE
((([Individual Candidate Course History].[Valid Until])
Between DateAdd("m",2,Date()) And DateAdd("m",3,Date())))
ORDER BY
[Individual Candidate Course History].[Valid Until])
GROUP BY
Companies.[Company Name]
ORDER BY
Companies.[Company Name]) AS Q3 ON
Q0.CN = Q3.CN))
</pre>
【问题讨论】:
-
请编辑问题并显示您构建的查询。