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 は意味がありません

入力/出力とスキーマを使用して、何をしようとしていますか。

ギャビーの答えに基づいて編集

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 に答える