如何在聚合表中消除或合并多行中较少行的结果?
当前情况是第一个表#1,有6行:
| cntrc_key|重新键控|辅助键|insr_key| drvr_key|其他键|lkp_key|
| --|--|--|--|--|--|--|
| 58046828 | 0 | 0 | 0 | 0 | 0 | 0 |
| 58046828 | 0 | 0 | 0 | 0 | 127270 | 0 |
| 58046828 | 0 | 45803863 | 0 | 0 | 127270 | 0 |
| 58046828 | 0 | 45803957 | 0 | 58245216 | 0 | 0 |
| 58046828 | 0 | 0 | 51021791 | 0 | 0 | 0 |
| 58046828 | 0 | 45803863 | 0 | 58245215 | 0 | 0 |
预期是下一个表#2,有2行:
| cntrc_key|重新键控|辅助键|insr_key| drvr_key|其他键|lkp_key|
| --|--|--|--|--|--|--|
| 58046828 | 0 | 45803863 | 51021791 | 58245215 | 127270 | 0 |
| 58046828 | 0 | 45803957 | 51021791 | 58245216 | 0 | 0 |
4条答案
按热度按时间ybzsozfc1#
您可以使用listagg将每个cntrc_key的所有行作为一行获取。将整行转换为几行将删除数据的含义。
我尝试了以下方法。
| CNTRC_KEY| RE_KEY| AUP_KEY| INSR_密钥|驱动器键|OTHR_键|LKP_KEY|
| --|--|--|--|--|--|--|
| 58046828 | 0 |0,45803863,45803957| 0.51021791| 0,58245215,58245216| 0.127270| 0 |
请让我知道如果这有帮助。或者让我知道你希望你的输出是如何的规则。
tyu7yeag2#
这里有一个选择;看看有没有用
第一部分(CTE束)用于区分行(
row_number
解析函数);rn
然后在“main”查询中用于连接。最后一个
where
子句删除所有null
值(coalesce
函数)和所有0
行(greatest
函数)。测试结果:
n1bvdmb63#
反枢轴+枢轴
。或者只是为了好玩
sqyvllje4#
这里有一个使用MODEL子句解决这类问题的例子,但是由于你没有给予任何关于你打算应用的规则的足够信息,结果并不完全是你上面显示的那样,但至少它给出了一个想法: