"Ascending" order is the default. You don't need to specify it. Beyond that, your code should run fine.
I would probably use a CTE, but that's just me.
;with cte as
(
SELECT *,
CASE WHEN call_case = '2-Answer' THEN 0 ELSE 1 END AS CallCaseOrder
FROM dbo.remaining
WHERE username = @username
AND status = @status
AND company_status = @company_status,
)
SELECt * FROM cte
ORDER BY CallCaseOrder, PaymentStatus;
I think that's much easier to read. I also would avoid using "
SELECT *
". It's bad practice, and you can't tell it not to include your
CallCaseOrder
in the returned dataset.