1

これを行う理由は、データ セットごとに 4 つの異なる方法でグループ化する必要があるためですが、それらを 1 つの結果セットとして返す必要があります。

例えば。

実際の例は思いつきませんが、私がやっている例では必要です。Fruits、Vegetables、Presidents、および Sports を返す場合を想像してみてください。

果物は名前で、野菜は色で、大統領は政党で、スポーツは都市で。(わかりました、悪い例があると言いました)

とにかく、私が望んでいたのは、「サブクラス」と呼ばれる GROUP BY でした。これを行うために、'SubClass' は 'RuleClass' を見て、どのコードを返す必要があるかを判断します。これは可能ですか?これに似た何か...

 UPDATE #FakeTable
 SET SubClass = CASE WHEN RuleClass = 'Fruit' THEN H.NAME
                     WHEN RuleClass = 'Vegetables' THEN H.COLOR
                     WHEN RuleClass = 'President' THEN H.PARTY
                     ELSE H.City
                END
        FROM #Holdings H
        WHERE #FakeTable.SubClass = NULL

したがって、この列は、本質的に、perceeding 列の内容に応じて、別の一時テーブルの別の列から取得されます..

4

2 に答える 2

0

句にcaseステートメントを含めることができます。group by

select class,
       (case when WHEN RuleClass = 'Fruit' THEN H.NAME
                  WHEN RuleClass = 'Vegetables' THEN H.COLOR
                  WHEN RuleClass = 'President' THEN H.PARTY
                  ELSE H.City
        END) as subclass,
      count(*)
from t
group by (case when WHEN RuleClass = 'Fruit' THEN H.NAME
               WHEN RuleClass = 'Vegetables' THEN H.COLOR
               WHEN RuleClass = 'President' THEN H.PARTY
               ELSE H.City
          ENd);

別のフィールドとしてテーブルに追加する必要はありません。

于 2013-08-02T19:04:08.547 に答える