我持续的SQL头痛…
如果运行以下解释的代码:
SELECT State, Name, ID FROM ... WHERE Lost=False
我会得到类似以下的内容:
State Name ID NY A 123 NY A 123 NY B 234 NY C 345 MD X 356 MD Y 668
我真正需要的是每个州的资源数量之和。这里的问题是,如果我只是执行以下操作,则不会考虑到明显存在重复项(请参见上面的前两个记录)。
SELECT state, Count(state) AS statecount FROM .... GROUP BY state, Lost HAVING Lost=false
在仅提取不同记录的情况下,如何获取丢失=否的每个状态的记录数?我以为也许可以在第一个查询中放入DISTINCT,然后在ColdFusion中运行查询查询,但是您不能在子查询中执行诸如聚合的操作。
基本上,以上面的示例为例,我最终希望做到这一点:
State Count NY 3 (not 4!) MD 2
我应该注意…这在Access中
显然,Access 2007支持内联视图。所以你可以做到这一点。(我不知道较早的版本)
SELECT state, COUNT(CR_ID ) FROM ( SELECT DISTINCT lkuState.StateName AS state, tblMain.CR_ID FROM lkuState INNER JOIN (tblMain INNER JOIN (locLink INNER JOIN tblLoc ON locLink.GEOMETRY_ID = tblLoc.GEOMETRY_ID) ON tblMain.CR_ID = locLink.CR_ID) ON lkuState.FIPS_State = tblLoc.FIPS_State WHERE tblMain.Lost=False) t GROUP BY State
更新
正如David-W-Fenton在下面关于我不确定哪些版本支持派生表/内联视图的说明中所述
派生表长期以来一直受到Jet / ACE的支持,尽管其语法曾经与简单的(SELECT …)As Alias完全不同-它是[SELECT …]。请注意在方括号中的尾随句号,并且这排除了需要内部方括号的SQL SELECT