Другая проблема заключается в том, что в ORDER BY CASE я получаю ошибки о том, что AverageGrade не распознается, но с tblReview.Grade все в порядке, но я хочу заказать его по средней оценке.
AverageGrade нельзя использовать в качестве столбца для сортировки, пока вашим основным запросом не будет подзапрос ....
Я получаю результат, умноженный на три, поскольку BrandID 1 существует 3 раза в tblBrandInCategoiry.
create table #tblBrand
(
BrandID int,
BrandName varchar(10)
)
create table #tblCategory
(
CategoryID int,
CategoryName varchar(10)
)
create table #tblBrandInCategory
(
CategoryID int,
BrandID int
)
create table #tblReview
(
ReviewID int,
Grade int,
BrandID int
)
insert into #tblBrand(BrandID, BrandName)values(1, 'Nike')
insert into #tblBrand(BrandID, BrandName)values(2, 'Adidas')
insert into #tblBrand(BrandID, BrandName)values(3, 'Puma')
insert into #tblCategory(CategoryID, CategoryName)values(1, 'Shoes')
insert into #tblCategory(CategoryID, CategoryName)values(2, 'Shorts')
insert into #tblCategory(CategoryID, CategoryName)values(3, 'Pants')
insert into #tblBrandInCategory(CategoryID, BrandID)values(1, 1)
insert into #tblBrandInCategory(CategoryID, BrandID)values(2, 1)
insert into #tblBrandInCategory(CategoryID, BrandID)values(3, 1)
insert into #tblReview(ReviewID, Grade, BrandID)values(1, 5, 1)
insert into #tblReview(ReviewID, Grade, BrandID)values(2, 5, 9)
insert into #tblReview(ReviewID, Grade, BrandID)values(3, 2, 1)
Select BrandID, Brand, AverageGrade, Review
From
(
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
)K
ORDER BY
CASE
WHEN @sortColumn = 1 THEN Brand
WHEN @sortColumn = 2 THEN Review
WHEN @sortColumn = 4 THEN AverageGrade
ELSE Brand
drop table #tblBrand
drop table #tblCategory
drop table #tblBrandInCategory
drop table #tblReview
Окончательный набор результатов
![enter image description here](https://i.stack.imgur.com/p8fsp.jpg)