If you need to limit the number of row returned by one of your tables, you could use a CROSS APPLY solution.

Right table expression is processed once for each row from the left table expression.

    CROSS APPLY (SELECT TOP 1 *
                 FROM   skh.v_list_price_each
                 WHERE  skh.v_price_book.item_short = skh.v_list_price_each.item_short) lpe

Due you're using a TOP (X) expression, you could add an ORDER BY clause to the SELECT statement.


    SELECT      skh.ARCUS.IDCUST,
                skh.ICITEM.ITEMNO AS product_code,
                skh.ICITEM.CNTLACCT,
                lpe.price AS list_price,
                skh.v_price_book.price,
                lpe.unit AS Expr2,
                skh.v_price_book.price_unit
    FROM        skh.ARCUS
    INNER JOIN  skh.v_price_book 
    ON          skh.ARCUS.PRICLIST = skh.v_price_book.price_list
    INNER JOIN  skh.ICITEM 
    ON          skh.v_price_book.item_short = skh.ICITEM.ITEMNO
    AND         skh.v_price_book.company = skh.ICITEM.AUDTORG
    CROSS APPLY (SELECT TOP 1 *
                 FROM   skh.v_list_price_each
                 WHERE  skh.v_price_book.item_short = skh.v_list_price_each.item_short) lpe
    WHERE       skh.ICITEM.INACTIVE = 0
    AND         skh.ARCUS.SWACTV = 1
    ORDER BY    skh.ARCUS.IDCUST;