此问题已在此处有答案:
Select First Row of Every Group in sql [duplicate](2个答案)
Fetch the rows which have the Max value for a column for each distinct value of another column(35个回答)
Return row with the max value of one column per group [duplicate](3个答案)
Get top results for each group (in Oracle)(5个答案)
5天前关闭。
假设我有一个如下所示的结果,它来自于在后台使用Oracle Server的多个表(它不是一个表)的一组复杂查询。
当我有像type in ('A','B')
这样的where条件时,就会出现这种情况。我在源表中也有其他类型,但现在我只使用这两种类型。
| ID|代码|类型|
| --------------|--------------|--------------|
| 1|一百二十三|A|
| 二|二一四|B|
| 三|三百三十六|A|
| 1|二百四十五|B|
| 二|二一四|A|
| 四|一百二十三|B|
现在我希望一个ID只有一条记录。也就是说,如果存在,就输入A,否则输入B。如果同一ID的两条记录都存在,那么只输入A。
此结果中还有其他列,其中数据对于单个ID保持相同,但code和type除外
结果应该如下所示
| ID|代码|类型|
| --------------|--------------|--------------|
| 1|一百二十三|A|
| 三|三百三十六|A|
| 二|二一四|A|
| 四|一百二十三|B|
我尝试使用组函数与外部查询,但似乎不能应用任何组函数的整个结果。
我试着对每种类型单独使用联合。但它再次给出了两种类型。
我不知道如何才能得到我想要的结果。
1条答案
按热度按时间kr98yfug1#
您可以使用ROW_NUMBER()函数来实现此结果,例如
https://dbfiddle.uk/aBbWTqZP