Пожалуйста, попробуйте следующее
select s1.Itm_cd,s1.Itm_Name,Sum(S1.amount),Sum(s2.amount)
from salestrans s1,salestrans s2
where s1.Itm_cd = S2.Itm_cd
and Convert(Varchar(10),S1.Tran_dt,112) between '20181101' and'20181130'
and Convert(Varchar(10),S2.Tran_dt,112) between '20171101' and '20171130'
group by s1.Itm_cd,s1.Itm_Name
Order by s1.Itm_cd
Здесь логика заключается в том, что в правой части при сравнении вы предоставляете только дату, а не разделитель и время.Аналогичным образом следует применить к столбцу в левой части для сравнения.
if(Convert(Varchar(10), getdate(),112) = '20181224')
print 'Matched'
else
print 'Not Matched'
if(getdate() = '20181224')
print 'Matched'
else
print 'Not Matched'
Здесь выходные данные равны Matched
для первого и Not Matched
, поскольку в первом случае для сравнения был взят одинаковый формат обеих сторон..