mysql - 将页脚行作为一组行的标题行

标签 mysql sql sql-server postgresql

我有如下表格:

 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 

SQL Server Demo

MySQL Demo

PostgreSQL Demo

关于mysql - 将页脚行作为一组行的标题行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16077696/

相关文章:

mysql - jsp servlet Mysql数据库连接错误

php - 从 SQL 数据库获取信息并使用 PHP 显示的问题

mysql - 替换列中给定的字符串出现位置

sql - 获取单个查询中记录的计数百分比

java - MySql 使用 Java 中的查询查找单词之间的匹配项

mysql - 当行值不等于特定值时更新表

sql - 更改表添加列语法

sql - 将 Oracle 时间戳更新为当前日期

sql-server - 无法在 Linux 的 MSSQL RC1 服务器设置中挂载数据目录

sql - 在分页期间获取SQL Server中记录总数的有效方法