数据如下表所示。
brnach_id branch_loc branch_name
1222 HYD COMPUTER
1222 HYD NULL
1222 HYD COMPUTER
1222 HYD NULL
1222 HYD NULL
1333 BLR ENGINEERING
1333 HYD NULL
1333 BLR NULL
1333 CHI NULL
1444 PUN MARKETING
1444 HYD NULL
字符串
对于每个分支_id,我希望将branch_name列的值替换为其余行的第一行。
预期输出为
brnach_id branch_loc branch_name
1222 HYD COMPUTER
1222 HYD COMPUTER
1222 HYD COMPUTER
1222 HYD COMPUTER
1222 HYD COMPUTER
1333 BLR ENGINEERING
1333 HYD ENGINEERING
1333 BLR ENGINEERING
1333 CHI ENGINEERING
1444 PUN MARKETING
1444 HYD MARKETING
型
先谢谢你。
2条答案
按热度按时间mrzz3bfm1#
您可以将
FIRST_VALUE
函数与IGNORE NULLS
一起使用,例如字符串
无论
branch_name
列如何按照每个branch_id
值排序brc7rcf02#
在SQL(不仅仅是Oracle SQL)中,结果集是无序的,除非您指定
ORDER BY
子句为它们提供顺序。在您的例子中,没有什么明显的东西可以确定是什么使一行成为“第一”行。让我们假设有这样一种方法来识别行,并且它位于
id
列中,而您没有显示;然后,从Oracle 12中,您可以用途:字符串
如果你没有办法对行进行排序,并希望
MIN
最大值作为“第一”(这可能不是你在显示器上看到的第一行),那么:型
如果您不想替换(
UPDATE
)表中的值,而只想更改显示的内容,则可以用途:型
或者,如果您没有可以排序的列,并且需要最小值:
型
fiddle