select
case when
max(right(card.card_barcode,
(select role_length from sys_barcode_role
join sys_role_type on fk_type_uuid = type_uuid
where type_code = 'ASSET_SERAI' and role_company = org_company)
))
is null
then 0
else (
max(right(card.card_barcode,
(select role_length from sys_barcode_role
join sys_role_type on fk_type_uuid = type_uuid
where type_code = 'ASSET_SERAI' and role_company = org_company)))
) end assetSerailizNumber, org_company as company_uuid
from view_organization_employee charge
left join asset_card card on card.card_charge_employee = employee_uuid and card.delete_status = 0 and card_source != 2
group by charge.org_company
你写法错了,你用exists来判断,不能用is null来判断,而且要把这个判断顺序改一下,要不然就把max(right放case前面去,要不然就是把exist放max前面来