Mysql 尝试获取列值作为范围
我正在使用mysql5.7.19使用pos机打印卡片。表sales有Mysql 尝试获取列值作为范围,mysql,Mysql,我正在使用mysql5.7.19使用pos机打印卡片。表sales有序列号、pos机号和卡金额的列表。我想获得特定pos机按卡金额分组出售的序列号的范围 我想得到位置号ps1的所有范围 我想要的结果是: |range | card_amt|pos_no| |100-102| 10 | ps1 | |107-109| 10 | ps1 | |111 | 5 | ps1 | 我假设您预期结果中111的卡金额应该是10。我采纳了你上一个问题的答案
序列号
、pos机号
和卡金额
的列表。我想获得特定pos机按卡金额分组出售的序列号
的范围
我想得到位置号ps1的所有范围
我想要的结果是:
|range | card_amt|pos_no|
|100-102| 10 | ps1 |
|107-109| 10 | ps1 |
|111 | 5 | ps1 |
我假设您预期结果中111的卡金额应该是10。我采纳了你上一个问题的答案:
select dn.serial_no as dnval, min(up.serial_no) as upval, dn.card_amt, dn.pos_no
from sales up
join sales dn
on dn.serial_no <= up.serial_no
and dn.pos_no = up.pos_no
and dn.card_amt = up.card_amt
where not exists (
select 1 from sales a
where a.serial_no = up.serial_no + 1
and a.pos_no = up.pos_no
and a.card_amt = up.card_amt
)
and not exists (
select 1 from sales b
where b.serial_no = dn.serial_no - 1
and b.pos_no = dn.pos_no
and b.card_amt = dn.card_amt
)
group by dn.pos_no, dn.serial_no, dn.card_amt
order by dn.pos_no, dn.serial_no;
选择dn.serial\u no作为dnval,选择min(up.serial\u no)作为upval,选择dn.card\u amt,选择dn.pos\u no
从销售额上升
加入销售dn
在dn.serial_no上,为什么第一个结果是100-103?源表中没有102。您使用的是MySQL版本>=8吗?这将对windows的可能性有很大帮助functions@ThomasG对不起,我想插入102。现在修好了。我也在使用mysql5.7.19,例如,如果101的card_amount更改为3,结果会是什么?@Lennart它将出现在100和102的两行中