#sql-server #stored-procedures #sql-server-2012
#sql-сервер #хранимые процедуры #sql-server-2012
Вопрос:
Вот моя процедура, и она возвращает несколько строк, потому что идентификатор функции имеет несколько идентификаторов для одного идентификатора поставщика как изменить его, чтобы он возвращал уникальные строки, пожалуйста, помогите мне.
ALTER PROCEDURE GetVendorsPageWise
@PageIndex INT = 1
,@PageSize INT = 10
,@type nvarchar(max)
,@city nvarchar(max)
,@query nvarchar(max)
,@RecordCount INT OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT ROW_NUMBER() OVER
(
order by Vendor_PrimaryInfo.Vendor_ID asc
)AS RowNumber
,Unit_Table.Unit_title, Vendor_Base_Price.Base_Price, Vendor_Base_Price.showprice, Category_Table.Title, Vendor_Registration.Business_Name,
Vendor_PrimaryInfo.Street_Address, Vendor_PrimaryInfo.Locality, Vendor_PrimaryInfo.Nearest_Landmark, Vendor_PrimaryInfo.City, Vendor_PrimaryInfo.State,
Vendor_PrimaryInfo.Country, Vendor_PrimaryInfo.PostalCode, Vendor_PrimaryInfo.Latitude, Vendor_PrimaryInfo.Longitude, Vendor_PrimaryInfo.ImageUrl,
Vendor_PrimaryInfo.ContactNo, Vendor_PrimaryInfo.Email,Vendor_PrimaryInfo.Vendor_ID,Vendor_Value_Table.Feature_ID,Vendor_Value_Table.Value_Text
INTO #Results
FROM Unit_Table INNER JOIN
Vendor_Base_Price ON Unit_Table.Unit_ID = Vendor_Base_Price.Unit_ID INNER JOIN
Vendor_PrimaryInfo ON Vendor_Base_Price.Vendor_ID = Vendor_PrimaryInfo.Vendor_ID INNER JOIN
Vendor_Registration ON Vendor_Base_Price.Vendor_ID = Vendor_Registration.Vendor_ID AND
Vendor_PrimaryInfo.Vendor_ID = Vendor_Registration.Vendor_ID INNER JOIN
Category_Table ON Vendor_Registration.Category_ID = Category_Table.Category_ID
LEFT JOIN
Vendor_Value_Table ON Vendor_Registration.Vendor_ID = Vendor_Value_Table.Vendor_ID LEFT JOIN
Feature_Table ON Vendor_Value_Table.Feature_ID = Feature_Table.Feature_ID
where Vendor_Registration.Category_ID=@type and Vendor_PrimaryInfo.City=@city @query
order by Vendor_PrimaryInfo.Vendor_ID
SELECT @RecordCount = COUNT(*)
FROM #Results
SELECT * FROM #Results
WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize 1 AND(((@PageIndex -1) * @PageSize 1) @PageSize) - 1
DROP TABLE #Results
END
Комментарии:
1. Спасибо за редактирование marc_s я новичок здесь.
2. Почему бы просто не удалить FeatureId из вашего выбора? Если это не то, что вам нужно, не могли бы вы показать, как выглядят ваши результаты в настоящее время и как должны выглядеть ваши желаемые результаты.
3. Но я хочу, чтобы Feature_ID был там
4. Затем нам нужно увидеть текущие результаты и ожидаемый результат, чтобы уточнить, что вам нужно.
5. Как я вставляю здесь изображение моего результата?
Ответ №1:
Вы будете использовать DISTINCT
ключевое слово
SELECT DISTINCT *
FROM #Results
WHERE
RowNumber BETWEEN(@PageIndex -1) * @PageSize 1
AND
(((@PageIndex -1) * @PageSize 1) @PageSize) - 1