我持续的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
中答案 0 :(得分:2)
显然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
答案 1 :(得分:0)
首先创建一个视图:
SELECT DISTINCT State, Name FROM OriginalTable
然后,在较大的查询中,将OriginalTable替换为您从中获取此信息的表。
答案 2 :(得分:0)
首先使用
在表格中添加标识列alter table ATTENDANCE add AUTOID INT IDENTITY
然后在查询
下面运行Select State,count(*) as cnt
FROM TableName
WHERE AUTOID IN (SELECT MAX(AUTOID) FROM TableName GROUP BY State, Name, id)
group by State
having count(*) > 1
答案 3 :(得分:0)
这是一种名为“ SPL”的语言,可以使用一行代码来实现:
file("d:/table.xlsx").xlsimport@tx().group(State;~.icount(ID):count)
显示在以下附件中:
答案 4 :(得分:-1)
SELECT state, Count(distinct ID) AS statecount
FROM ....
GROUP BY state, Lost
HAVING Lost=false