Let's start with some consumable test data which you should have provided:
CREATE TABLE #TableA
(
YourColumnA varchar(10) NOT NULL
);
INSERT INTO #TableA
VALUES ('AAAA'),('AAAB'),('AABB'),('AACC');
CREATE TABLE #TableB
(
YourColumnB varchar(10) NOT NULL
,YourValue varchar(10) NOT NULL
);
INSERT INTO #TableB
VALUES ('AAA*', '100$'), ('AA**', '50€');
The following works:
WITH JoinOrders
AS
(
SELECT 4 - LEN(REPLACE(YourColumnB, '*', '')) As JoinOrder
,REPLACE(YourColumnB, '*', '[A-Z]') AS LikeColumn
,YourColumnB
,YourValue
FROM #TableB
)
,AllJoins
AS
(
SELECT A.YourColumnA, J.YourColumnB, J.YourValue
,ROW_NUMBER() OVER (PARTITION BY A.YourColumnA ORDER BY J.JoinOrder) AS rn
FROM #TableA A
JOIN JoinOrders J
ON A.YourColumnA LIKE J.LikeColumn
)
SELECT YourColumnA, YourColumnB, YourValue
FROM AllJoins
WHERE rn = 1
ORDER BY YourColumnA;