1

このエラーが発生する理由を教えてください。

"=" ?

SELECT * 
FROM
    (SELECT
         ROW_NUMBER() OVER(ORDER BY  
            CASE WHEN @SortType = '1' THEN mt.Ad END ASC,
            CASE WHEN @SortType = '2' THEN mt.Ad END DESC,
            CASE WHEN @SortType = '3' THEN mt.Fiyat END ASC,
            CASE WHEN @SortType = '4' THEN mt.Fiyat END DESC) AS RowNr, * 
     FROM @MainTable mt
     WHERE mt.Fiyat > @MinPrice AND mt.Fiyat < @MaxPrice
       AND mt.MarkaId IN (CASE WHEN @BrandFilter != '' 
                            THEN (SELECT bf.Data FROM dbo.Split(@BrandFilter, ',') bf) 
                            ELSE (mt.MarkaId) 
                          END )
    ) Result
WHERE 
   RowNr > ((@PageNr-1) * 10) AND RowNr <= ((@PageNr) * 10) 

SQL Server ではこのエラーが発生します。

サブクエリが複数の値を返しました。サブクエリが =、!=、<、<=、>、>= の後にある場合、またはサブクエリが式として使用されている場合、これは許可されません。

私の分割関数は複数行のテーブルを返しますが、私は書いてINいません=

ありがとう

4

2 に答える 2

2

そんな使い方はできませんCASE。コードしようとしている条件は次のようです。

(@BrandFilter = '' OR 
@BrandFilter != '' AND mt.MarkaId IN (SELECT bf.Data FROM dbo.Split(@BrandFilter, ',')))
于 2013-07-15T15:30:35.490 に答える