0

可以在一个组中做一个案例吗?与此类似:

select * from table

    GROUP BY 
      CASE WHEN @Attivita=0 THEN (RANK() OVER (GROUP BY Nome,AccountID,Matricola DESC))   

     END

谢谢

4

2 回答 2

1

您必须按所有选定(非聚合)列分组..

因此,如果您select *需要按所有人分组...

如果不是group by你的意思,order by那么是的,你可以..

于 2010-03-15T11:42:00.117 回答
0

不:这没有任何意义。

你不能

  • 使用 GROUP BY 和 SELECT *
  • 在子条款中使用 RANK
  • 在 OVER 子句中使用 GROUP BY
  • GROUP BY 在排名函数上没有意义

你想做什么,请输入/输出和模式。

编辑,基于 gaby 的回答

select
   *
from
    (
    SELECT
        *, RANK() OVER (GROUP BY Nome,AccountID,Matricola DESC) as bar
    from
        table
    ) foo
ORDER BY
   CASE WHEN @Attivita=0 THEN bar END
于 2010-03-15T11:42:58.493 回答