Sql MS访问:仅当计数小于2时选择

Sql MS访问:仅当计数小于2时选择,sql,ms-access,Sql,Ms Access,所以,这是一组相当简单的代码,我似乎不知道如何使用它。使用非常简单的select语句 SELECT ref, pos, trans, ticket_number, timestamp FROM trans WHERE trans Like "*refund*" 提供以下各项的正确响应: 现在的问题在于:我们只想计算退款开始时没有以下退款取消。所以这只会返回参考号3872和7555。额外的问题是,如果此人开始对同一张票进行实际的合法退款,则开始、取消、开始并将其视为合法退款。我试过一组,但由于某

所以,这是一组相当简单的代码,我似乎不知道如何使用它。使用非常简单的select语句

SELECT ref, pos, trans, ticket_number, timestamp
FROM trans
WHERE trans Like "*refund*"
提供以下各项的正确响应:

现在的问题在于:我们只想计算退款开始时没有以下退款取消。所以这只会返回参考号3872和7555。额外的问题是,如果此人开始对同一张票进行实际的合法退款,则开始、取消、开始并将其视为合法退款。我试过一组,但由于某种原因,它不会拉组。它给出了以下误差:

当我给它:

SELECT ref, pos, trans, ticket_number, timestamp
FROM trans
WHERE trans Like "*refund*"
group by ticket_number


您可以使用count=1的子查询,使用单个trans值输入票证号

SELECT ref, pos, trans, ticket_number, timestamp
FROM trans where ticket_number IN  (
select ticket_number 
from (
  select distinct ticket_number, trans 
  from trans

) 
group by ticket_number
having count(*) = 1 ) 

你似乎想要更多的开始票而不是取消票。如果是:

SELECT ref, pos, trans, ticket_number, timestamp
FROM trans
WHERE ticket_number IN (SELECT ticket_number
                        FROM trans
                        GROUP BY ticket_number
                        HAVING SUM(SWITCH(trans = "Refund started", 1,
                                          trans = "Refund cancelled", -1
                                          1=1, 0
                                         )
                                  ) > 0
                       )

我真的很喜欢@Gordon Linoff的答案,但为了提供另一种选择,这里有另一种使用连接的方法:

选择t.ref、t.pos、t.trans、t.ticket\u number、t.timestamp 自trans t内连接 选择t.票证号码 从trans t 按t.票号分组 正在使用sumt.trans='退款已开始。'-t.trans='退款已取消。'0 t1 在t1上,车票号=t车票号
结果为0。
SELECT ref, pos, trans, ticket_number, timestamp
FROM trans
WHERE ticket_number IN (SELECT ticket_number
                        FROM trans
                        GROUP BY ticket_number
                        HAVING SUM(SWITCH(trans = "Refund started", 1,
                                          trans = "Refund cancelled", -1
                                          1=1, 0
                                         )
                                  ) > 0
                       )