我的表格数据如下:
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值 记录
答案 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