SQL Multiple子查询问题

时间:2019-06-17 15:35:02

标签: sql ms-access-2010

当前正在处理第二个子查询(t3),这给了我一个语法错误。如果排除了t3,则查询工作正常。

SELECT switch(LEFT(t1.[treatment],1)='C',"Complaint",LEFT(t1.[treatment],1)='P',"Post") AS Treatment, count(t1.[ID]) AS Total_Vol, count(t2.[event]) AS Total_Posted, format(count(t2.[event]) / count(t1.[ID]),"0.00%") AS Percentage, COUNT(IIF(t1.[requirements]='1',1,)) AS Special _Population,count(t3.[approved]) as Approved_vol
FROM Main_audit_table_v3 AS t1 LEFT JOIN (SELECT t2.[ID], t2.[event] FROM Main _table AS t2 WHERE t2.event Not Like ('NA'))  AS t2 ON t1.[ID] = t2.[ID]
LEFT JOIN (SELECT t3.[ref],t3.[requirement],t3.[approved] from Main_table AS t3 where 
t3.[requirement] = '1' and t3.[approved] not like ('NA')) as t3
t2.[ID] = t3.[ID]
GROUP BY LEFT(t1.[treatment],1);

预期输出是[approved]列将提供记录数,其中需求= 1且不像NA一样被批准。

1 个答案:

答案 0 :(得分:0)

在MS Access中,您需要JOIN附加括号。而且您缺少ON

SELECT . . .
FROM (Main_audit_table_v3 AS t1 LEFT JOIN
      (SELECT t2.[ID], t2.[event]
       FROM Main _table AS t2
       WHERE t2.event Not Like ('NA')
      ) AS t2 ON t1.[ID] = t2.[ID]
     ) LEFT JOIN
     (SELECT t3.[ref], t3.[requirement], t3.[approved] 
      FROM Main_table AS t3 
      WHERE t3.[requirement] = '1' and t3.[approved] not like 'NA'
     ) as t3
     ON t2.[ID] = t3.[ID]
GROUP BY LEFT(t1.[treatment], 1);