Select语句上的不同记录ORACLE-SQL
除了下表中的一个字段(即字段2)外,我有一个可能有重复记录的表。字段1是联接表的键Select语句上的不同记录ORACLE-SQL,sql,oracle,select,Sql,Oracle,Select,除了下表中的一个字段(即字段2)外,我有一个可能有重复记录的表。字段1是联接表的键 Field1 Field2 Field3 aa T qqq aa F qqq bb F eee cc T rrr 现在在字段2中,如果T和F都在同一个字段1中,我想选择带有T的行作为字段2的值。 如果只有T或F可用,我想要那个记录。 所以Select语句的输出应该是 Field1 Field2 Fie
Field1 Field2 Field3
aa T qqq
aa F qqq
bb F eee
cc T rrr
现在在字段2中,如果T和F都在同一个字段1中,我想选择带有T的行作为字段2的值。
如果只有T或F可用,我想要那个记录。
所以Select语句的输出应该是
Field1 Field2 Field3
aa T qqq
bb F eee
cc T rrr
如果有有效的方法,请帮助我。试试这个
select col1,MAX(col2) as Col2,Max(Col3) as Col3 from Employee group by Col1
如果试图通过选择多列在一列中使用distinct,则应使用Max()
或Min()
获取值
你会发现这里的问题是
col1 col2 col3
aa T qqq
aa F zzz
在这种情况下,MAX(col3)
将是zzz
而不是qqq
在这种情况下,您必须根据需要在Max()
或Min()
之间进行选择
用小提琴找到你的解决方案
希望这有帮助试试这个
select col1,MAX(col2) as Col2,Max(Col3) as Col3 from Employee group by Col1
如果试图通过选择多列在一列中使用distinct,则应使用Max()
或Min()
获取值
你会发现这里的问题是
col1 col2 col3
aa T qqq
aa F zzz
在这种情况下,MAX(col3)
将是zzz
而不是qqq
在这种情况下,您必须根据需要在Max()
或Min()
之间进行选择
用小提琴找到你的解决方案
希望这有帮助试试这个
select col1,MAX(col2) as Col2,Max(Col3) as Col3 from Employee group by Col1
如果试图通过选择多列在一列中使用distinct,则应使用Max()
或Min()
获取值
你会发现这里的问题是
col1 col2 col3
aa T qqq
aa F zzz
在这种情况下,MAX(col3)
将是zzz
而不是qqq
在这种情况下,您必须根据需要在Max()
或Min()
之间进行选择
用小提琴找到你的解决方案
希望这有帮助试试这个
select col1,MAX(col2) as Col2,Max(Col3) as Col3 from Employee group by Col1
如果试图通过选择多列在一列中使用distinct,则应使用Max()
或Min()
获取值
你会发现这里的问题是
col1 col2 col3
aa T qqq
aa F zzz
在这种情况下,MAX(col3)
将是zzz
而不是qqq
在这种情况下,您必须根据需要在Max()
或Min()
之间进行选择
用小提琴找到你的解决方案
希望对您有所帮助您可以使用分析函数为
字段2的值指定排名编号
select Field1, Field2, Field3 from (
select Field1
, Field2
, Field3
, row_number() over (partition by Field1, Field3
order by Field2 desc) rn
from your_table
)
where rn = 1
/
此实现假定反向字母排序将根据您的需要生成正确的顺序。如果您有一个更复杂的优先级排序方案,则需要使用CASE或DECODE应用某种转换。您可以使用分析函数为字段2的值分配一个排名号
select Field1, Field2, Field3 from (
select Field1
, Field2
, Field3
, row_number() over (partition by Field1, Field3
order by Field2 desc) rn
from your_table
)
where rn = 1
/
此实现假定反向字母排序将根据您的需要生成正确的顺序。如果您有一个更复杂的优先级排序方案,则需要使用CASE或DECODE应用某种转换。您可以使用分析函数为字段2的值分配一个排名号
select Field1, Field2, Field3 from (
select Field1
, Field2
, Field3
, row_number() over (partition by Field1, Field3
order by Field2 desc) rn
from your_table
)
where rn = 1
/
此实现假定反向字母排序将根据您的需要生成正确的顺序。如果您有一个更复杂的优先级排序方案,则需要使用CASE或DECODE应用某种转换。您可以使用分析函数为字段2的值分配一个排名号
select Field1, Field2, Field3 from (
select Field1
, Field2
, Field3
, row_number() over (partition by Field1, Field3
order by Field2 desc) rn
from your_table
)
where rn = 1
/
此实现假定反向字母排序将根据您的需要生成正确的顺序。如果有更复杂的优先级排序方案,则需要使用CASE或DECODE应用某种转换。在此查询中,如果不是,则指定0
这样,如果有一个“T”将始终首先出现
我唯一的假设是,对于每个Col1,“T”和“F”都显示为1或更少请告诉我这是否正确
在此查询中,如果为“T”,则指定0
这样,如果有一个“T”将始终首先出现
我唯一的假设是,对于每个Col1,“T”和“F”都显示为1或更少请告诉我这是否正确
在此查询中,如果为“T”,则指定0
这样,如果有一个“T”将始终首先出现
我唯一的假设是,对于每个Col1,“T”和“F”都显示为1或更少请告诉我这是否正确
在此查询中,如果为“T”,则指定0
这样,如果有一个“T”将始终首先出现
我唯一的假设是,对于每个Col1,“T”和“F”都显示为1或更少请告诉我这是否正确
根据您的要求,我将使用:
select
Field1,
max(Field2) as Field2,
max(Field3) keep(dense_rank first order by Field2 desc) as Field3
from
table
group by
Field1;
第三列函数获取字段2对应的行。对于您的需求,我将使用:
select
Field1,
max(Field2) as Field2,
max(Field3) keep(dense_rank first order by Field2 desc) as Field3
from
table
group by
Field1;
第三列函数获取字段2对应的行。对于您的需求,我将使用:
select
Field1,
max(Field2) as Field2,
max(Field3) keep(dense_rank first order by Field2 desc) as Field3
from
table
group by
Field1;
第三列函数获取字段2对应的行。对于您的需求,我将使用:
select
Field1,
max(Field2) as Field2,
max(Field3) keep(dense_rank first order by Field2 desc) as Field3
from
table
group by
Field1;
第三列函数获取字段2对应的行。这是另一个函数,根据Col2
和Col1
获取Col3
值,而不考虑列中的Max()
或Min()
select col1, MAX(col2) as Col2 ,
(select top 1 col3 from Employee as E where E.Col1=Employee.Col1 and
E.col2 = max(Employee.Col2) order by col3) as Col3
from Employee
group
by Col1
在Fiddle中找到解决方案这是另一个根据Col2
和Col1
获得Col3
值的解决方案,而不考虑列中的Max()
或Min()
select col1, MAX(col2) as Col2 ,
(select top 1 col3 from Employee as E where E.Col1=Employee.Col1 and
E.col2 = max(Employee.Col2) order by col3) as Col3
from Employee
group
by Col1
在Fiddle中找到解决方案这是另一个根据Col2
和Col1
获得Col3
值的解决方案,而不考虑列中的Max()
或Min()
select col1, MAX(col2) as Col2 ,
(select top 1 col3 from Employee as E where E.Col1=Employee.Col1 and
E.col2 = max(Employee.Col2) order by col3) as Col3
from Employee
group
by Col1
在Fiddle中找到解决方案这是另一个根据Col2
和Col1
获得Col3
值的解决方案,而不考虑列中的Max()
或Min()
select col1, MAX(col2) as Col2 ,
(select top 1 col3 from Employee as E where E.Col1=Employee.Col1 and
E.col2 = max(Employee.Col2) order by col3) as Col3
from Employee
group
by Col1
用小提琴找到解决方案我喜欢你的答案,但是