SELECT a.order_code, a.check_time, a.order_time, a.crk_type, isnull(t.name,'') as crk_type_name, a.base_code, isnull(b.name,'') as base_name, a.materiel_code, m.name as materiel_name, u.name as unit_name, a.crk_number/m.stock_unit_cf as crk_number, case when a.crk_number<>0 then a.crk_money*m.stock_unit_cf/a.crk_number else 0.0 end as crk_price, a.crk_money, case when a.crk_number<>0 then a.crk_cost*m.stock_unit_cf/a.crk_number else 0.0 end as cost_price, a.crk_cost FROM ( SELECT materiel_code, src_order_code as order_code, convert(char(18),check_time,120) as check_time, convert(char(10),order_time,120) as order_time, src_order_type as crk_type, is_rk, base_code, case when is_rk=1 then number else -number end as crk_number, case when is_rk=1 then total_cost else -total_cost end as crk_cost, case when is_rk=1 then total_money else -total_money end as crk_money FROM VKC_CRK_LISTS a inner join all_materiel m on a.materiel_code=m.code WHERE (1=1) and a.data_area like '00102' and (order_day between 20180101 and 20181231 and (base_code='0010010') and (src_order_type in (31)) and (is_rk in (1)) and (m.sort_code='00101015') and (a.materiel_code='00101015267')) ) as a INNER JOIN ALL_MATERIEL m on a.materiel_code=m.code INNER JOIN ALL_UNIT u on m.stock_unit_code=u.code LEFT OUTER JOIN KC_BASE b on a.base_code=b.code LEFT OUTER JOIN VKC_CRK_TYPE t on a.crk_type=t.code WHERE (1 = 1) ORDER BY a.order_time,a.check_time