Try this approach,
DECLARE @TBL TABLE
(
WorkNum int,
InvoiceID int,
ratecodes varchar(10)
)
;
INSERT INTO @TBL (WorkNum, InvoiceID, ratecodes)
SELECT 1000, 1, 'fruit'
UNION ALL
SELECT 1000, 1, 'vegetables'
UNION ALL
SELECT 1000, 2, 'toys'
UNION ALL
SELECT 1000, 3, 'drinks'
UNION ALL
SELECT 1000, 3, 'toys'
UNION ALL
SELECT 1002, 4, 'fruit'
;
select *
from @TBL T
LEFT OUTER JOIN
(
SELECT WorkNum
FROM @TBL
group by WorkNum, ratecodes
having ratecodes = 'toys'
) TM ON T.WorkNum = TM.WorkNum
WHERE Tm.WorkNum is null
This will show you how you can filter the workitems of type 'toys'. Using above approach you can modify your query like this
select distinct T.worknum,
tblB.CustomerName,
tblc.entereddate
from @TBL T
LEFT OUTER JOIN
(
SELECT WorkNum
FROM @TBL
group by WorkNum, ratecodes
having ratecodes = 'toys'
) TM ON T.WorkNum = TM.WorkNum
Inner Join TableB tblB on T.worknum = tblB.worknum
Inner Join TableC tblC on T.worknum = tblc.worknum
WHERE Tm.WorkNum is null