3

次のようなテーブルがあります。

 rfa_yea | rfa_idx |                      rfa_dsp                       | rfa_tpr
---------+---------+----------------------------------------------------+---------
 2013    |       1 | PIGATO VERM.NO/ROSS/ORMEASCO CL75                  | A
 2013    |       2 | ESTATE\134134134047 BICCHIERE SING.VERDE           | A
 2013    |       3 | Rif. Trn. N. 17 del 17/04/2013 Cassa N. 00001      | C
 2013    |       4 | BIB.RED BULL LAT.CL25 ENER.DRI                     | A
 2013    |       5 | BIB.RED BULL LAT.CL25 ENER.DRI                     | A
 2013    |       6 | SHOPPER 30X60 MAXI X 1000                          | A
 2013    |       7 | SHOPPER HD 27X50 MEDIE X 1000                      | A
 2013    |       8 | PIGATO VERM.NO/ROSS/ORMEASCO CL75                  | A
 2013    |       9 |  * SCONTO SUBTOTALE                                | A
 2013    |      10 | Rif. Trn. N. 19 del 17/04/2013 Cassa N. 00001      | C

rfa_tprとしてマークされたフィールドを持つレコードは、'C'その前にある行のグループのヘッダーです。現時点ではフッター(セパレーター)ではなく、行のグループのヘッダーとして行を配置する必要があるため、次のような結果セットを取得したいと考えています。

 rfa_yea | rfa_idx |                      rfa_dsp                       | rfa_tpr
---------+---------+----------------------------------------------------+---------
 2013    |       3 | Rif. Trn. N. 17 del 17/04/2013 Cassa N. 00001      | C
 2013    |       1 | PIGATO VERM.NO/ROSS/ORMEASCO CL75                  | A
 2013    |       2 | ESTATE\134134134047 BICCHIERE SING.VERDE           | A
 2013    |      10 | Rif. Trn. N. 19 del 17/04/2013 Cassa N. 00001      | C
 2013    |       4 | BIB.RED BULL LAT.CL25 ENER.DRI                     | A
 2013    |       5 | BIB.RED BULL LAT.CL25 ENER.DRI                     | A
 2013    |       6 | SHOPPER 30X60 MAXI X 1000                          | A
 2013    |       7 | SHOPPER HD 27X50 MEDIE X 1000                      | A
 2013    |       8 | PIGATO VERM.NO/ROSS/ORMEASCO CL75                  | A
 2013    |       9 |  * SCONTO SUBTOTALE                                | A

SQL のみのソリューションはありますか? このソリューションは、MSSQL、PostgreSQL、および MySQL の各種類のデータベース サーバーで動作するはずです。

ノート

例のように2つだけでなく、複数のセパレーター(フッター)行を持つことができます...

4

4 に答える 4

1

解決は簡単、問題は問題...

昨年が最初で、rfa_idx が rfa_yea の後ろに来るという仮定の下でのソリューション。

select * from table1 order by rfa_yea desc, find_in_set(rfa_tpr, "C,A"), rfa_idx;

問題は、id の増加や、前述の設計上の問題に頼りすぎないことです。

マルコ

于 2013-04-18T09:13:23.780 に答える
0

これはデータベースの設計上の問題だと思います。あなたが話している「行のグループ」には、行の順序以外に共通点はありません。

可能であれば、フィールドを追加し、これらの行グループに共通の値を挿入することをお勧めします。これは便利な解決策ではありませんが、データベースの設計は、データを整理する方法を反映する必要があると思います。

于 2013-04-18T08:35:53.177 に答える