2011-06-28 5 views

答えて

0

。 order by節でのみエイリアスを使用できます。あなたはこのように記述する必要が

SELECT * FROM 
(
Select TD.ProductAccumRule_Id,TD.PRODUCT_ID,TD.VARIABLE_ID,TD.Accum_code,Ordinal = row_number() over(partition by TD.PRODUCT_ID,TD.VARIABLE_ID,TD.Accum_code order by TD.PRODUCT_ID,TD.VARIABLE_ID,TD.Accum_code) From testdata TD 
Join (
select PRODUCT_ID,VARIABLE_ID,Accum_code from testdata where 
isActive = 1 
GROUP BY PRODUCT_ID,VARIABLE_ID,Accum_code 
having count(*) > 1 
) TEMP on TD.Product_Id = temp.Product_Id and TD.Variable_Id = TEMP.Variable_Id and TD.Accum_code = TEMP.Accum_code 
where TD.isActive = 1 
) myInnerQuery 
where Ordinal <> 1 
2

row_number()は常に1になるでしょう、そうですか?

私はあなたのような巣にこのクエリが必要だと思う:限り選択し、選択されたエイリアスはwhere句で知られていない前に、どこが実行されるよう

select * from (YOUR_BIG_QUERY) where Ordinal <> 1 
+0

感謝フランコ、私はそれを取得することはできませんよということでした。私はこのエラーが発生しています。メッセージ156、レベル15、状態1、行10 キーワード 'where'の近くの構文が正しくありません。 – Sandy

関連する問題