我有一张这样的table。
Name| Id | cost
----------------
A | 1 | 1000
----------------
A | 1 | 2000
----------------
B | 2 | 3000
----------------
B | 2 | 4000
注意:数据已按排序顺序排列
我需要的结果是:
Name| Id | cost
----------------
A | 1 | 1000
----------------
| | 2000
----------------
B | 2 | 3000
----------------
| | 4000
因为“a”已经存在于我们的查询中,所以下一行的“name”中应该有一个空值,并且与“a”关联的id是1,这也是重复的,因此它也应该是空的。b的情况也类似。
如何在单个select查询中实现这一点?
3条答案
按热度按时间xmjla07d1#
你可以用
row_number()
:这假设你想要
(name, id)
元组排序依据cost
(如示例数据所示)。如果要使用另一个排序列,则可以更改order by
窗口函数的子句。gmol16392#
我们能做什么
cygmwpex3#
我不建议将此作为数据库查询。结果集将包含没有意义的行,除非您看到它们上面的行——这不是sql方式。
我建议首先进行汇总,并将成本放在一行中:
如果你真的坚持这个结果集,有一个
order by
在外部查询中——因为没有order by
结果可以是任何顺序。因此,我认为最好的解决办法是: