SQL Oracle如果字段1的值相同,则相同字段1必须有一个字段2 [已关闭]

a9wyjsp7  于 2023-05-16  发布在  Oracle
关注(0)|答案(1)|浏览(208)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

4天前关闭。
Improve this question
在一个表中,让字段1作为用户名,字段2作为ID。如果用户名相同,则id字段必须首先仅被提取一次,而不管用户名被提取的次数。下面的图片我添加了这个例子。

因此,无论何时出现相同的用户名,其ID必须出现在其相应用户名的第一行中。请让我知道这一点。

xmd2e60i

xmd2e60i1#

正如我在评论中所指出的,像这样格式化数据可能更好地在下游的消费系统中完成。
但是,您可能会执行以下操作:

SELECT 
 "USER", 
 CASE WHEN row_number() OVER (PARTITION BY "USER", id ORDER BY 1) = 1 THEN id END id
FROM test
ORDER BY "User", id

你可以看到它在运行in this Fiddle
row_number()窗口函数将为每行分配一个数字,每组user/id从1开始(因为partition by)。然后,case使用该参数来确定要显示的内容。
请注意,根据注解,我的原始解决方案仅保证每个user的一行将填充id(不一定是第一行)。我在这篇文章中更新了我的解决方案ORDER BY "USER", id和小提琴。我还把托尔斯滕·凯特纳的替补加入了小提琴。

相关问题