如何检查sql查询中的重复记录。
答案 0 :(得分:2)
总会有一个row_number(),它是1,对吧?
我认为您需要嵌套此查询,如:
select * from (YOUR_BIG_QUERY) where Ordinal <> 1
答案 1 :(得分:0)
只要在select之前执行where,在where子句中不知道所选别名。你只能按顺序使用别名。
你必须这样写:
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