如何将拆分的SQL查询结果合并为单个输出表?
如何将拆分的SQL查询结果合并为单个表
我需要统计所有Double(双人房)和Twin(双床房)房型的固定附加设施数量(包括无附加设施的房间)。我编写了SQL代码并得到了所需数据,但结果被拆分为3个11行的表和1个1行的表,请问如何将这些结果合并为单个表?
我的SQL代码:
SELECT r.room_number AS "Room", r.room_type AS "Type", COUNT(f.extra_id) AS "Extra" FROM a2_room r LEFT JOIN a2_fixed_extra f ON (r.room_number = f.room_number) WHERE r.room_type = 'Twin' OR r.room_type = 'Double' GROUP BY r.room_number, r.room_type ORDER BY r.room_number;
当前查询结果
Room Type Extra ---- ------ ---------- 005 Twin 1 101 Double 1 102 Double 1 103 Double 1 104 Double 1 106 Twin 1 107 Double 1 108 Double 1 109 Twin 0 110 Twin 0 111 Twin 0 Room Type Extra ---- ------ ---------- 113 Double 1 114 Double 2 115 Twin 0 117 Double 1 118 Double 1 120 Twin 1 201 Double 1 202 Double 1 203 Twin 1 204 Twin 0 207 Twin 0 Room Type Extra ---- ------ ---------- 208 Double 1 209 Double 1 210 Double 1 211 Double 1 217 Double 1 218 Double 2 219 Double 1 220 Twin 0 221 Twin 0 222 Twin 1 223 Double 1 Room Type Extra ---- ------ ---------- 224 Double 1
期望结果
-- Room Type Extras -- ---- ------ ---------- -- 005 Twin 1 -- 101 Double 1 -- 102 Double 1 -- 103 Double 1 -- 104 Double 1 -- 106 Twin 1 -- 107 Double 1 -- 108 Double 1 -- 109 Twin 0 -- 110 Twin 0 -- 111 Twin 0 -- 113 Double 1 -- 114 Double 2 -- 115 Twin 0 -- 117 Double 1 -- 118 Double 1 -- 120 Twin 1 -- 201 Double 1 -- 202 Double 1 -- 203 Twin 1 -- 204 Twin 0 -- 207 Twin 0 -- 208 Double 1 -- 209 Double 1 -- 210 Double 1 -- 211 Double 1 -- 217 Double 1 -- 218 Double 2 -- 219 Double 1 -- 220 Twin 0 -- 221 Twin 0 -- 222 Twin 1 -- 223 Double 1 -- 224 Double 1
解决方法
这种结果拆分是SQL客户端的分页显示机制导致的,你的SQL逻辑本身没有问题,数据是完整的,只是被客户端分成多页展示。可以通过以下方式获取合并后的单表结果:
- 调整客户端显示设置:在你使用的SQL工具(如SQL Developer、Navicat、DBeaver等)中,找到结果集的分页/行数限制选项,将每页显示行数调至足够大(比如1000),或者直接关闭分页功能,就能看到完整的单表结果。
- 导出结果到文件:将查询结果导出为CSV、Excel或文本文件,导出的文件会自动合并所有数据,不会保留分页拆分。
- 命令行工具处理(如sqlplus):执行
SET PAGESIZE 1000(或更大数值)命令,取消分页限制,让所有结果一次性显示。
内容的提问来源于stack exchange,提问作者Nicholas Rohrmoser
相关产品推荐
相关产品推荐

