我想知道如何最好地完成这项任务。我基本上需要为Access数据库编写一些SQL,它将以下列格式或多或少地获取数据:
State Lost Name
NY no A
NY no B
NY yes C
NY no D
MD yes E
MD yes F
VA no G
VA yes H
我需要一个查询来返回以下内容:
State CountLost Total in State
NY 1 4
MD 2 2
VA 1 2
我当前的查询在获取前两列时效果很好,但我不太确定如何将其附加到最后一列,显示每个州的总数。 无论是那个还是一样好的状态和每个州损失%的列:
State %Lost in State
NY 25%
MD 100%
VA 50%
这是我当前的查询给我前两列。希望有人可以帮助我理清其余部分......
SELECT lkuState.StateName as state, Count(lkuState.StateName) AS statecount
FROM lkuState INNER JOIN .........
GROUP BY lkuState.StateName, tblMain.Lost
HAVING ((tblMain.Lost)=false)
答案 0 :(得分:3)
在大多数数据库中,您可以使用CASE语句(与SUM结合)有条件地计算Lost数。但是IIRC,Access不支持CASE而是使用IIF。
SELECT s.StateName, COUNT(*) AS TotalInState,
SUM( IIF(m.Lost = 'yes', 1, 0) ) AS CountLost
FROM tblMain m INNER JOIN lkuState s ON s.StateID = m.StateID
GROUP BY s.StateName