我有两个疑问:
select count(*) over (partition by col1) from t1
和
select case when count(*) over (partition by col1) >1 then 1 else 0 end from t1
第一个效果很好。然而,第二个会引发错误:
Invalid column reference 'count': (possible column names are: <all columns in t1>)
在
*
中放置任何列名称而不是 count
会产生相同的行为。
问题产生的原因是什么?我在 dosc 中没有发现
case when
和 over partition by
在一起有任何限制。
试试这个:
select COUNT(CASE WHEN >1 THEN 1 ELSE 0 END) over (partition by col1) from t1;