我有一份报告看起来是这样的:
| 编号顺序|时间戳记|标识符|状态|
| - -|- -|- -|- -|
| 十二个|2021-06-23-14.00.00.232425|十一|已完成|
| 十二个|2021-06-30-18.00.00.224525|二十二个|已完成|
| 十二个|2021-07-01-01.00.00.224525|二十三个|已完成|
| 十二个|2021-08-01-01.00.00.224525|二十五个|取消了|
这是通过SQL完成的:
SELECT numberOrder, timestamp, id, status
from order
where status <> 'cancel'
order by id
fetch first row only
结果返回:
| 编号顺序|时间戳记|标识符|状态|
| - -|- -|- -|- -|
| 十二个|2021-06-23-14.00.00.232425|十一|已完成|
如果我没有2个或更多订单,如何在同一个查询中仅得出取消订单的结果?如果我只有一个订单,并且状态为取消(未完成订单)。结果仅显示取消的订单。但如果我有2个以上的订单(订单1:完成,订单2:done和orders 3 = cancel)结果应该只有orders 1:已完成。
报告:
| 编号顺序|时间戳记|标识符|状态|
| - -|- -|- -|- -|
| 十二个|2021-06-23-14.00.00.232425|十一|取消了|
SELECT numberOrder, timestamp, id, status
from order
where (status <> 'cancel' or status = 'cancel') -- always true the condition
order by id
fetch first row only
结果是:
| 编号顺序|时间戳记|标识符|状态|
| - -|- -|- -|- -|
| 十二个|2021-06-23-14.00.00.232425|十一|取消了|
2条答案
按热度按时间t5fffqht1#
如果您只选择一行,则按状态排序有效,
如果要选择任意数量的行,只有在没有“完成”时才用取消,
不确定最后一个解决方案是否是最优的,但它确实有效。
von4xj4u2#
试试看:
其结果是:
| 编号顺序|识别码|状态|
| - -|- -|- -|
| 十二个|十一|已完成|
| 十三个|10个|取消了|
如果结果超出预期,请根据上述示例数据提供正确的结果。