1

簡単なクエリがあります

select distinct m.STATE_CD, m.sex,SUM(c.cost) as TotalCost
    from members as m
    inner join claims as c on c.patid=m.PATID
    group by cube(m.STATE_CD,m.sex)
    order by m.STATE_CD

次のような結果セットを返します

ここに画像の説明を入力

今のように注文したいのですが、NULLを何かに変更するCASEステートメントを追加せずに、列がまだアルファベット順にNULLをSTATE_CD結果セットの一番下に置く方法はありますかSTATE_CDそれはアルファベット順で最後に落ちますか?

4

3 に答える 3

4

次の順序でISNULLを使用します。

DECLARE @test TABLE (STATE CHAR(2));

INSERT @test (STATE)
SELECT NULL
UNION ALL
SELECT 'AK'
UNION ALL
SELECT 'AL'
UNION ALL 
SELECT 'AR';

/*Returns null first*/
SELECT * FROM @test ORDER BY STATE

/*Returns null last*/
SELECT * FROM @test ORDER BY ISNULL(STATE,'ZZ');
于 2012-12-19T18:59:36.110 に答える
3

これは次のことを行う必要があります。

ORDER BY CASE WHEN m.STATE_CD IS NULL THEN 2 ELSE 1 END, m.STATE_CD

于 2012-12-19T18:59:04.367 に答える
1

階層的なブレイクアウトにキューブのグループ化を使用する必要がありますか?一般的に、ヌルになるグループがリストされていると思います。'group by with m.State、m.sex'をリストしてから、'm.stateがnullではない'の述語をリストできますか?可能な修正。

それ以外は、nullをグループ化として定義するために何かをする必要があると思います。すべてのnullがコレクションからの合計を表していることが確実な場合は、isnull(m.State_CD、'Totals')と同様です。それらを一番下に配置したいが、後で名前を変更したい場合は、いつでもcte、一時テーブル、ネストされたselectなどのコレクションで名前を変更できます。その後、ラベルを変更します。

于 2012-12-19T18:59:53.603 に答える