I prepare a SQL query and I use a case-when expression
for ordering purposes. If I used req_amount
or apply_date
as sort_column it works fine. But I use emp_name
for sorting, I get this error
Conversion failed when converting date and/or time from character string.
Please help me to resolve this.
DECLARE @srch_text varchar(50) = 'Cha'
DECLARE @page_no int = 1
DECLARE @page_size int = 10
DECLARE @sort_column varchar(50) = 'emp_name'
DECLARE @order varchar(50) = 'ASC'
if (@order = 'asc' OR @order = 'ASC')
BEGIN
select i.TRN_ID,e.EMP_FULLNAME,i.REQUESTING_AMOUNT,i.BET_APPLY_DATE
from INTERMEDIATE i
INNER JOIN EMPLOYEE e ON i.BET_EMP_NUMBER = e.EMP_NUMBER
where e.EMP_FULLNAME LIKE '%'+@srch_text+'%'
ORDER BY
CASE @sort_column
WHEN 'req_amount' THEN i.REQUESTING_AMOUNT
WHEN 'emp_name' THEN e.EMP_FULLNAME
WHEN 'apply_date' THEN i.BET_APPLY_DATE
END asc
OFFSET @page_size * ((@page_no - 1)) ROWS FETCH NEXT @page_size ROWS ONLY
END
ELSE
BEGIN
select i.TRN_ID,e.EMP_FULLNAME,i.REQUESTING_AMOUNT,i.BET_APPLY_DATE
from INTERMEDIATE i
INNER JOIN EMPLOYEE e ON i.BET_EMP_NUMBER = e.EMP_NUMBER
where e.EMP_FULLNAME LIKE '%'+@srch_text+'%'
ORDER BY
CASE @sort_column
WHEN 'req_amount' THEN i.REQUESTING_AMOUNT
WHEN 'emp_name' THEN e.EMP_FULLNAME
WHEN 'apply_date' THEN i.BET_APPLY_DATE
END desc
OFFSET @page_size * ((@page_no - 1)) ROWS FETCH NEXT @page_size ROWS ONLY
END