我有一个视图会产生以下行。
comp Sub-comp Lognum id Firname LAstname
AK AK-G 0 3897 ABC DEF
AK AK-G 0 5432 mark ray
MC MC-A 0 1234 john steve
MC MC-A 0 5678 dan pitcher
MC MC-A 0 9843 james robin
MC MC-A 84 1234 john steve
MC MC-A 84 5678 dan pitcher
MC MC-A 84 9843 james robin
我想只获取具有lognum的行(如果同一行的0也作为lognum)以及其他只有0作为lognum的行。
结果表应该是这样的
comp Sub-comp Lognum id Firname LAstname
AK AK-G 0 3897 ABC DEF
AK AK-G 0 5432 mark ray
MC MC-A 84 1234 john steve
MC MC-A 84 5678 dan pitcher
MC MC-A 84 9843 james robin
查询的大纲如下
create view view1 as
select
comp, Sub-comp, "00" as Lognum, id ,Firname ,LAstname
from
table A
inner joins---
UNION
select
select
comp, Sub-comp, Lognum, id ,Firname ,LAstname from
table B
inner joins----
;
有人可以帮忙吗?
谢谢!
答案 0 :(得分:0)
试试这个:
select * from(
select comp,
Sub-comp,
Lognum,
id,
Firname,
LAstname,
row_number() over(partition by id order by lognum desc) rn
from table_name)
where rn = 1;
这将显示具有按ID分组的最大lognum的行。
答案 1 :(得分:0)
此查询应该有效,即使对于给定的id
值,您有多个"非零" lognum
行。
如果查看where
子句,则始终返回具有非零lognum
值的行(t.Lognum != 0
)。但是,具有零lognum值的行也将返回,但仅当t.rn = 1
条件为真时才会返回,只有在没有任何其他非零lognum
的情况下才会返回id
条件order by
1}}(参见row_number()
窗口函数的select t.comp,
t.Sub-comp,
t.Lognum,
t.id,
t.Firname,
t.LAstname
from (select t.*,
row_number() over (
partition by t.id
order by case when t.lognum = 0 then 1 else 0 end) as rn
from your_view t) t
where t.Lognum != 0 or t.rn = 1
子句)。
a <- matrix(0,ncol=2,nrow=0)
large <- paste("some_string_",1:200,sep=" ")
a <- rbind(a,toString(large))
a <- rbind(a,toString(large))
a <- rbind(a,toString(large))
a <- rbind(a,toString(large))
a <- rbind(a,toString(large))
a <- rbind(a,toString(large))
a <- rbind(a,toString(large))
print(a)