У меня есть хранимая процедура, я не могу добраться до работы:ВЫБЕРИТЕ СЛУЧАЙ с Псевдонима в SQL Server 2008
ALTER PROCEDURE GetBrands
@sortColumn INT
AS
SELECT DISTINCT(tblBrand.BrandID),
tblBrandinCategory.CategoryID,
tblBrand.BrandName AS Brand,
AVG(tblReview.Grade) AS AverageGrade,
COUNT(tblReview.ReviewID) AS Review
FROM tblBrand LEFT JOIN
tblBrandinCategory ON tblBrand.BrandID = tblBrandinCategory.BrandID LEFT JOIN
tblReview ON tblBrand.BrandID = tblReview.BrandID
GROUP BY tblBrand.BrandID, tblBrandinCategory.CategoryID, tblBrand.BrandName
ORDER BY
CASE
WHEN @sortColumn = 1 THEN Brand
WHEN @sortColumn = 2 THEN Review
WHEN @sortColumn = 4 THEN AverageGrade
ELSE Brand
END
Результат, который я хочу, чтобы это список с брендами, которые только будут показаны один раз. Для меня это делает tblBrandInCategory.
tblBrand
BrandID BrandName
1 Nike
2 Adidas
3 Puma
tblCategory
CategoryID CategoryName
1 Shoes
2 Shorts
3 Pants
tblBrandInCategory
CategoryID BrandID
1 1
2 1
3 1
tblReview
ReviewID Grade BrandID
1 5 1
2 9 1
3 2 1
я получаю результат multiplyed с тремя becouse BrandID 1 существуют 3 раза в tblBrandInCategoiry.
Другая проблема заключается в том, что в ORDER BY CASE я получаю ошибки, которые AverageGrade не распознается, но tblReview.Grade в порядке, но я хочу заказать его на Среднем уровне.
Я думаю, что вам нужно изменить ваш вопрос. tblReview, в вашем запросе, не входит в схему, которую вы видите под ней. – Random
Okey, его обновленный – user1007103
Что такое схема просмотра tblreview? – Pankaj