连接日期范围并限制为单个字段

时间:2015-02-16 02:03:22

标签: ms-access concat

当我在查询中设置Allen Browne的ConcatRelated以使用日期范围时,我会在每个评论字段中对该范围发表评论。我想按装配线名称分组,但我得到了每一行的评论。我的SQL查询如下。任何帮助将不胜感激。

我尝试了一个子查询但是仍然会得到相同的结果或语法错误,具体取决于我的格式。

SELECT 
Asm_Equipment_Rate.Line_Name,
Avg(Asm_Equipment_Rate.Std_Pnls_Lbr_Hr) AS RAsm_Line_Std_Hrs,
Sum(Asm_Prod_Data.Lbr_Hrs) AS RAsm_Line_Total_Hrs,
([RAsm_Line_Std_Hrs]*[RAsm_Line_Total_Hrs]) AS RT100_Pct_Target, 
([RT100_Pct_Target]*0.9) AS RT90_Pct_Target, 
Sum(Asm_Prod_Data.Produced) AS RTotal_Produced, 
Sum(Asm_Prod_Data.Backflushed) AS RTotal_Backflushed, 
[RTotal_Produced]/[RT100_Pct_Target] AS RAsm_Line_EFF,
Sum(Asm_Prod_Data.Scrap_Qty) AS RAsm_Scrapped_Panels, 
Sum(Asm_Prod_Data.Reworked) AS RAsm_Reworked_Panels, 
IIf(([RAsm_Scrapped_Panels]+[RAsm_Reworked_Panels])=0,1,1-
([RAsm_Scrapped_Panels]+[RAsm_Reworked_Panels])/([RAsm_Scrapped_Panels]+
[RAsm_Reworked_Panels]+[RTotal_Produced])) AS RFYP,
ConcatRelated
        ('Comments',
         'Asm_Prod_Data',
         'PA_date Between ' & Format([Forms]![Date Prompt]!
[txtBDate],'\#yyyy-m-d\#') & ' And ' & Format([Forms]![Date Prompt]!
[txtEDate],'\#yyyy-m-d\#'),
'Comments',
     ', ') AS RConCat_Comments
FROM Asm_Equipment_Rate INNER JOIN Asm_Prod_Data ON    

Asm_Equipment_Rate.Equipment = Asm_Prod_Data.P_Line

WHERE (((Asm_Prod_Data.PA_Date) Between [Forms]![Date Prompt]![txtBDate] 
And [Forms]![Date Prompt]![txtEDate]))
GROUP BY Asm_Equipment_Rate.Line_Name;

此致

比尔

1 个答案:

答案 0 :(得分:0)

将WHERE子句更改为

'PA_date Between ' & 
  Format([Forms]![Date Prompt]![txtBDate],'\#yyyy-m-d\#') & 
' And ' & Format([Forms]![Date Prompt]![txtEDate],'\#yyyy-m-d\#') & 
' And P_Line=' & Asm_Prod_Data.P_Line,

如果P_Line是文本,则需要引用该值。

另外,我认为当你调用一个函数时,你需要在函数调用中使用双引号,虽然如果你有什么工作,那是不正确的。也许它在以后的Access版本中有所改变。

编辑:我的意思是函数调用中的WHERE子句

试试这个

SELECT 
Asm_Equipment_Rate.Line_Name,
ConcatRelated
        ('Comments',
         'Asm_Prod_Data',
         'PA_date Between ' 
             & Format([Forms]![Date Prompt]![txtBDate],'\#yyyy-m-d\#') 
             & ' And ' & Format([Forms]![Date Prompt]![txtEDate],'\#yyyy-m-d\#')
             & ' And P_Line=' & Asm_Prod_Data.P_Line,
         'Comments',
         ', ') AS RConCat_Comments
FROM Asm_Equipment_Rate INNER JOIN Asm_Prod_Data 
   ON Asm_Equipment_Rate.Equipment = Asm_Prod_Data.P_Line

WHERE (((Asm_Prod_Data.PA_Date) Between [Forms]![Date Prompt]![txtBDate] 
And [Forms]![Date Prompt]![txtEDate]))

GROUP BY Asm_Equipment_Rate.Line_Name,
    ConcatRelated
        ('Comments',
         'Asm_Prod_Data',
         'PA_date Between ' 
             & Format([Forms]![Date Prompt]![txtBDate],'\#yyyy-m-d\#') 
             & ' And ' & Format([Forms]![Date Prompt]![txtEDate],'\#yyyy-m-d\#')
             & ' And P_Line=' & Asm_Prod_Data.P_Line,
         'Comments',
         ', ');

不幸的是,GROUP BY表达式必须与SELECT子句中的表达式相同,无论多么复杂。