举个例子,假设我有一个视图返回以下结果:
| id | foreignkey | value1 | value2 |
|----|------------|--------|--------|
| 1 | 500 | -100 | 0 |
| 2 | 500 | 900 | 15 |
| 3 | 500 | 570 | 25 |
| 4 | 999 | 100 | 57 |
| 5 | 999 | 150 | 0 |
我试图实现的逻辑如下-
筛选出值为2=0的所有行。
但是,对于value2=0的行,我需要将它的value1添加到具有相同外键的所有其他行的value1中,其中value2!=0如果没有其他行具有相同的外键,那么value2=0的行将被过滤掉。
所以在这个例子中,我希望最终的结果是
| id | foreignkey | value1 | value2 |
|----|------------|--------|--------|
| 2 | 500 | 800 | 15 |
| 3 | 500 | 470 | 25 |
| 4 | 999 | 250 | 57 |
有什么想法吗?我在想一些关于 group by
也许有可能,但还没能想出解决办法。
3条答案
按热度按时间xjreopfe1#
与
SUM()
窗口功能:请看演示。
结果:
sigwle7e2#
嗯。假设这不会过滤掉所有行,您可以使用如下窗口函数:
ewm0tg9j3#
一种方法是将所有零行视为一个组,将所有其他行视为另一个组(基于foreignkey),然后简单地联接并添加值,最后只选择所需的值:
请在这里找到小提琴。