PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
12873 | 00/08/22 12:27:50 | RE(4):PB6.5: 一致した項目の多いもの順にソートしたいのですが。教えてください。 By Mika★ |
12796 | 00/08/17 12:21:56 | RE(3):PB6.5: 一致した項目の多いもの順にソートしたいのですが。教えてください。 By NAKKAN |
12789 | 00/08/17 00:26:24 | RE(2):PB6.5: 一致した項目の多いもの順にソートしたいのですが。教えてください。 By Taka |
12783 | 00/08/16 18:43:52 | RE(1):PB6.5: 一致した項目の多いもの順にソートしたいのですが。教えてください。 By Mika★ |
12761 | 00/08/16 11:15:03 | PB6.5: 一致した項目の多いもの順にソートしたいのですが。教えてください。 By NAKKAN |
カテゴリ:データウィンドウ
日付:2000年08月17日 00:26 発信者:Taka
題名:RE(2):PB6.5: 一致した項目の多いもの順にソートしたいのですが。教えてください。
Mika★さん、おはようございます。
>例えば、「IF(A = \'1\', 1, 0)」という感じの式の計算カラムを、条件の数だけ作って
>さらに、それらを全部合計した計算カラムを作って
>その合計の計算カラムでソートすれば、いけるのでは。
上記コメントは、「計算フィールド」ですよね? (^^;
わざわざ計算フィールドを、しかも条件の数だけ作るまでもないでしょう。
ソート式に、そのまま式を書くだけでOKです。
\"if(カラムA = \'1\',1,0) + if(カラムB = \'2\',1,0) + if(カラムC = \'3\',1,0) + if(カラムD = \'4\',1,0)\"
※この結果を降順にします
ORACLEなら、ORDER BY句に直接書いたほうが早いかもしれません。
ORDER BY
DECODE(カラムA,\'1\',1,0) + DECODE(カラムB,\'2\',1,0) + DECODE(カラムC,\'3\',1,0) + DECODE(カラムD,\'4\',1,0) DESC
※ORACLEは、SELECT句にないカラムや任意の式をORDER BYに書くことができます。
補足:
上記例ではソート用に数値を返しています。
これだと、カラムAのみヒットした行とカラムBのみヒットした行では、共に 1 になるので優先順位が不安定ですね。
1 or 0 ではなく、\'1\' or \'0\' を結合した文字列でソートすれば、
カラムAのみヒットした行 = \'1000\'
カラムBのみヒットした行 = \'0100\'
のようになるので優先付けを明確にすることができると思います。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows98
DBMS Oracle SQL*Net 8
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.