从SQL中的多个记录列表中获取特定记录

时间:2016-01-14 03:38:12

标签: sql oracle unique

我的表格数据如下:

Column1    Column2   Column3  
ACC1        940       1  
ACC1        950       1     
ACC1        950       50  
ACC2        940       1  
ACC2        950       50  
ACC3        940       1  
ACC4        950       1  
ACC5        950       50  

我的期望是检索w.r.t column1的唯一记录 条件1:如果那里只有一个帐户记录,则检索它 条件2:如果给定帐户有多个记录,其中有            只有一列记录的第3列值为50,检索此50值           记录

2 个答案:

答案 0 :(得分:1)

如果要为每个column1值获取一条记录,那么这是一个优先级查询。一种方法是使用窗口函数:

select t.*
from (select t.*,
             row_number() over (partition by column1
                                order by column3 desc
                               ) as seqnum
      from t
     ) t
where seqnum = 1;

编辑:

如果这是一个过滤查询,您需要单个记录或值大于50的记录,那么仍然可以使用窗口函数:

select t.*
from (select t.*, count(*) over (partition by column1) as cnt
      from t
     ) t
where cnt = 1 or column3 >= 50;

答案 1 :(得分:0)

SELECT * 
FROM   table t1 
       INNER JOIN (SELECT column1, 
                          Count(DISTINCT column1) AS count1 
                   FROM   table 
                   GROUP  BY column1) X 
               ON t1.column1 = X.column1 
WHERE  x.count1 = 1