我目前有一个如下所示的表格:
名称 --- 猫 --- 描述 --- 打算 --- Perc --- Err --- BP --- 日期
鲍勃------- C1 ------- Inf -------- 7Per -------- 0.05 ------ 0 ----- ADC2--12 / 02/2011假设我想构建一个查询来表达类似的内容:向我展示仍然采用相同格式的所有记录:
名称 --- 猫 --- 描述 --- 打算 --- Perc --- Err --- BP
Bob ------- C1 ------- Inf -------- 7Per -------- 0.05 ----- 16 ----- BAC2,VBE2, AEC2
鲍勃------- C2 ------ Com ------ 8Per -------- 0.45 ------ 4 ------ XBC4,ADC2
乔-------- C1 ------- -------- Inf文件-------- 7Per 0.05 ------ ------ 3 QYC2 ,KSC2
但的日期范围为01/01/2009至09/31/2011
我使用了创建的功能 http://allenbrowne.com/func-concat.html Allen Browne与以下SQL
结合使用SELECT
[Name],
[Cat],
[Desc],
[Thresh],
[Perc],
sum([Err]),
ConcatRelated("[BP]", "make_table_bp", "[Err] = " & [BP])
FROM make_table_bp
GROUP BY
[Name],
[Cat],
[Desc],
[Thresh],
[Perc],
[Err],
[BP];
但是现在我想将日期范围合并到SQL中,并且仍然具有基于此日期范围的不同记录。这甚至可能吗?
说查询如下:
SELECT
sub.[Name],
sub.Cat,
sub.[Desc],
sub.Thresh,
sub.Perc,
sub.SumOfErr,
ConcatRelated("BP",
"make_table_bp",
"[Err] > 0 AND [Name] = '" & sub.[Name]
& "' AND Cat = '"
& sub.Cat & "'",
"BP")
AS concat_BP
FROM
(SELECT
q.[Name],
q.Cat,
q.[Desc],
q.Thresh,
q.Perc,
Sum(q.[Err]) AS SumOfErr
FROM make_table_bp AS q
GROUP BY
q.[Name],
q.Cat,
q.[Desc],
q.Thresh,
q.Perc
) AS sub
ORDER BY
sub.Name,
sub.Cat;
答案 0 :(得分:1)
包含WHERE子句以限制[Date]值的范围。您还需要对ConcatRelated函数的第三个参数执行相同的操作。 (第三个参数与查询中的WHERE子句的用途相同。)
在主要查询中:
FROM make_table_bp
WHERE [Date] >= #01/01/2009# AND [Date] <= #09/30/2011#
GROUP BY
对于功能:
ConcatRelated("[BP]", "make_table_bp", "[Err] = " & [BP]
& " AND [Date] >= #01/01/2009# AND [Date] <= #09/30/2011#")
这个建议基于两个假设。
修改:刚刚在更新的问题中看到了最新的查询版本。我怀疑那是来了。所以试试这个:
SELECT
sub.[Name],
sub.Cat,
sub.[Desc],
sub.Thresh,
sub.Perc,
sub.SumOfErr,
ConcatRelated("BP",
"make_table_bp",
"[Err] > 0 AND [Name] = '" & sub.[Name]
& "' AND Cat = '"
& sub.Cat
& "' AND [Date] >= #01/01/2009# AND [Date] <= #09/30/2011#",
"BP")
AS concat_BP
FROM
(SELECT
q.[Name],
q.Cat,
q.[Desc],
q.Thresh,
q.Perc,
Sum(q.[Err]) AS SumOfErr
FROM make_table_bp AS q
WHERE [Date] >= #01/01/2009# AND [Date] <= #09/30/2011#
GROUP BY
q.[Name],
q.Cat,
q.[Desc],
q.Thresh,
q.Perc
) AS sub
ORDER BY
sub.Name,
sub.Cat;