select top 3 1 InternalID, CityDefaultName = (ci.CityZipCodes + ',' + ci.CityDefaultName + ',' + pr.ProvinceDefaultName + ',' + co.CountryDefaultName), NULL ParentInternalID, GeoLocation = (cast(ci.CityLatitude as varchar(20))+ ',' + cast(ci.CityLongitude as varchar(20)))from GeoData.TB_City ciinner join GeoData.TB_Province pr on pr.ProvinceInternalID = ci.CityProvinceIDinner join GeoData.TB_Country co on co.CountryInternalID = ci.CityCountryIDinner join Config.TB_ContractCountryMapping ccm on ccm.ContractCountryMappingCountryInternalID = co.CountryInternalIDwhere ci.CityStatusID = 1 and ccm.ContractCountryMappingStatusID = 1 and co.CountryStatusID = 1 and ccm.ContractCountryMappingContractInternalID = ltrim(rtrim(str(@ContractID))) and ci.CityZipCodes like SUBSTRING(@FilterString,1,3) +'%'Order By case when (@SortFieldIndex=1 and @OrderBy = 'DESC') then InternalID end DESC, -- no sort case when (@SortFieldIndex=1 and @OrderBy = 'ASC') then InternalID end, -- no sort case when (@SortFieldIndex=2 and @OrderBy = 'DESC') then CityDefaultName end DESC , case when (@SortFieldIndex=2 and @OrderBy = 'ASC') then CityDefaultName end, case when (@SortFieldIndex=4 and @OrderBy = 'DESC') then GeoLocation end DESC, case when (@SortFieldIndex=4 and @OrderBy = 'ASC') then GeoLocation end, case when (@SortFieldIndex not IN(1,2,4)) then 2 end