我有一组数据,如下所示
的数据
我想减少其中的行数。如果可以减少到单行,则将其视为最佳情况。
最终的数据集应该类似于
我尝试了SQL中的Min和Max函数。但我不想丢失任何数据。只是想填充空白单元格,以便报表的可读性。
如果任何人需要样本数据,那么你可以使用下面的查询
select * from
(
SELECT 9999 as primary_key ,1 AS column_1, 2 as column_2, NULL as column_3, NULL as column_4 FROM DUAL
UNION ALL
SELECT 9999, NULL, NULL, 3, 4 FROM DUAL
UNION ALL
SELECT 9999, 5, 6, NULL, NULL FROM DUAL
)
字符串
1条答案
按热度按时间vdgimpew1#
我建议将当前数据转换为排除NULL值的“未透视状态”,同时在混合中添加一个行号。然后,一旦可用,然后使用primary_key和行号将该中间结果重新透视为所需的最终格式:
字符串
| 列_1| COLUMN_2| COLUMN_3|列_4| COLUMN_4 |
| --|--|--|--| ------------ |
| 一个|二个|三个|四个| 4 |
| 五个|六个| * 空 | 空 *| null |
fiddle
请注意,这些行中的值的排列由row_number()计算确定。因此,不能保证值将重新对齐到它们所源自的同一行中。