案例分组在商店程序中

时间:2010-03-15 11:33:21

标签: sql-server-2005 stored-procedures group-by case

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

select * from table

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

     END

感谢

2 个答案:

答案 0 :(得分:1)

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

所以如果你select *,你需要按所有人分组......

如果您不是group by而是order by,那么您可以......

答案 1 :(得分: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