3

句で nameRowssを使用するにはどうすればよいですか?WHERE

SELECT TOP 10 
    ROW_NUMBER() OVER(ORDER BY dp.IdPytanie) AS Rowss,
    dp.IdPytanie
    ,dp.SpecjalnePytanie
 FROM dodajtemat_pytanie dp
 WHERE 
    (@RowBegining = 0 OR convert(int,Rowss) >= @RowBegining)
    AND (@RowEnd = 0 OR Rowss <= @RowEnd)

エラー ここに画像の説明を入力

この作品→

 @RowEnd = 0 OR ROW_NUMBER() OVER(ORDER BY dp.IdPytanie) <= @RowEnd
4

1 に答える 1

7

サブクエリまたはCTEを次のように使用します。

WITH CTE
AS
(
    SELECT 
      ROW_NUMBER() OVER(ORDER BY dp.IdPytanie) AS Rowss,
      dp.IdPytanie,
      dp.SpecjalnePytanie
    FROM dodajtemat_pytanie dp
)
SELECT *
FROM CTE
WHERE (@RowBegining = 0 OR Rowss >= @RowBegining)
  AND (@RowEnd      = 0 OR Rowss <= @RowEnd);

WHERE句はステートメントの前に論理的に評価されるSELECTため、新しく作成されたエイリアスは認識されませんRowss

SQL Server での論理クエリ処理手順の詳細については、次を参照してください。

于 2013-03-13T12:47:36.187 に答える