ВЫБЕРИТЕ ОТЛИЧНЫЙ и ORDER BY

Если я помещаю ОТЛИЧНОЕ ключевое слово, я получаю ошибку другое мудрое, оно хорошо работает.

ОШИБКА: сообщение 145, Уровень 15, состояние 1, Процедура SP_Products_GetList, Строка, 15 объектов ORDER BY должны появиться в списке выборки, если ОТЛИЧНЫЙ ВЫБОР указан.

ALTER PROCEDURE [dbo].[SP_Products_GetList]    

@CatID int,
@CatName int,
@IsNew bit,
@InActive bit,
@SortBy varchar(50),
@SortType varchar(50)

AS    

SELECT DISTINCT Products.ProductID, ProductName, MAX(Price) Price, PriceID, [Description], Size, IsNew, InActive FROM (SELECT * FROM Products WHERE (@InActive is null or @InActive = InActive  ) AND ( @IsNew is null or @IsNew = IsNew )) Products
    INNER JOIN  ProductCategory
        on Products.ProductID = ProductCategory.ProductID 
    INNER JOIN  (
                    SELECT * FROM Categories 
                        WHERE 
                            ( @CatID is null or @CatID = CatID ) and
                            ( @CatName is null or @CatName = CatName )
                ) Categories 
        on ProductCategory.CatID = Categories.CatID 
    INNER JOIN ( 
                    SELECT Prices.ProductID, Prices.Price, Prices.PriceID, Prices.SizeID  FROM Prices 
                        INNER JOIN (
                            SELECT ProductID, max(Price) Price from Prices WHERE PriceID IN 
                                    ( SELECT MAX(PriceID) FROM Prices 
                                    GROUP BY ProductID , SizeID)
                            GROUP BY ProductID )  Prices_
                        ON Prices.ProductID = Prices_.ProductID AND Prices.Price = Prices_.Price                     
                ) as Prices 
        on Prices.ProductID = Products.ProductID 
        inner join  Sizes 
        on Sizes.SizeID = Prices.SizeID 
GROUP BY ProductName, CatName, Products.ProductID, Price, PriceID, [Description] ,Size, IsNew,InActive 
ORDER BY 
CASE @SortType 
    WHEN 'desc' THEN  
    CASE @SortBy         
        WHEN 'ProductName' THEN ProductName        
        END  
    END 
    DESC, 
CASE @SortType 
    WHEN 'desc' THEN  
    CASE @SortBy         
        WHEN 'ProductID' THEN Products.ProductID
        WHEN 'Price' THEN Price          
        END  
    END 
    DESC,     
CASE @SortType 
    WHEN 'asc' THEN  
    CASE @SortBy         
        WHEN 'ProductName' THEN ProductName        
        END  
    END 
    ASC, 
CASE @SortType 
    WHEN 'asc' THEN  
    CASE @SortBy         
        WHEN 'ProductID' THEN Products.ProductID
        WHEN 'Price' THEN Price          
        END  
    END 
    ASC
5
задан abatishchev 9 August 2010 в 12:19
поделиться