我有如下表格:
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。
注意
我可以有多个分隔符(页脚)行,而不是示例中的两个......
最佳答案
SELECT a.rfa_yea ,
a.rfa_idx ,
a.rfa_dsp ,
a.rfa_tpr
FROM table1 a
INNER JOIN table1 c ON a.rfa_idx <= c.rfa_idx AND c.rfa_tpr = 'C'
GROUP BY a.rfa_yea ,
a.rfa_idx ,
a.rfa_dsp ,
a.rfa_tpr
ORDER BY MIN(c.rfa_idx), a.rfa_tpr DESC, a.rfa_idx
关于mysql - 将页脚行作为一组行的标题行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16077696/