0

結果のリストを表示する SQL クエリがあります。データベースのすべての行には約 20 の列があり、すべての列が必須というわけではありません。SQL クエリの結果を、入力された列の数で並べ替えたいと思います。空の列が最も少ない行が一番上にあり、空の列が最も多い行が一番下にあります。これを行う方法を知っている人はいますか?

ユーザーが行を編集するたびに更新された場合、この数は空の列の数を示し、それでリストを並べ替えることができる追加の列をテーブルに追加することを考えました。しかし、これは不必要なトラブルのように聞こえますが、他に方法がないのでしょうか? きっとここにいる人ならわかるはず!

ありがとう、

サンダー

4

2 に答える 2

3

巨大なcaseステートメントを使用して、ほぼすべてのデータベースでこれを実行できます。

order by ((case when col1 is not null then 1 else 0 end) +
          (case when col2 is not null then 1 else 0 end) +
          . . .
          (case when col20 is not null then 1 else 0 end)
         ) desc
于 2012-09-30T20:08:06.987 に答える
2

空の列の量で注文できます。

order by
        case when col1 is null then 1 else 0 end + 
        case when col2 is null then 1 else 0 end +
        case when col3 is null then 1 else 0 end +
        ...
        case when col20 is null then 1 else 0 end

(行末の に注意してください+。これは、空フィールドの整数カウントを含む 1 つの列のみであり、昇順で並べ替えられています。)

于 2012-09-30T20:06:52.310 に答える