Sql MS访问:仅当计数小于2时选择
所以,这是一组相当简单的代码,我似乎不知道如何使用它。使用非常简单的select语句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 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
)