我有两个表;第一个ORG包含以下列:
ORG_REF, ARB_REF, NAME, LEVEL, START_DATE第二个WORK包含以下列:
ARB_REF, WORK_STREET - WORK_NUM, WORK_ZIP 我想做以下事情:写一个在工作中搜索的select查询,看看WORK_STREET,WORK_ZIP是否重复在一起,然后你应该看看WORK_NUM。如果相同,则输出值‘ok’,但如果WORK_NUM不相同,则输出'not ok‘
我写了这个SQL查询:
select
A.ARB_REF, A.WORK_STREET, A.WORK_NUM, A.WORK_ZIP
case when B.B = 1 then 'OK' else 'not ok' end
from
work A
join
(select
WORK_STREET, WORK_ZIP count(distinct , A.WORK_NUM) B
from
WORK
group by
WORK_STREET, WORK_ZIP) B on B.WORK_STREET = A.WORK_STREET
and B.WORK_ZIP = A.WORK_ZIP现在我想用这个结果连接表ORG,我想检查是否每个地址都属于org,如果它属于,我应该创建一个新的列result并在它(结果)中将其设置为yes,并显示"name“列,否则在' result‘中设置为no。
有谁能帮帮我吗?
发布于 2021-08-24 20:00:35
虽然可以通过向已经启动的查询添加一个左外部联接来实现结果,但只使用count() over...可能是最简单的方法。
with org_data as (
-- do the inner join before the left join later
select * from org1 o1 inner join org2 o2 on o2.orgid = o1.orgid
)
select
*,
count(*) over (partition by WORK_STREET, WORKZIP) as cnt,
case when o.ARB_REF is not null then 'Yes' else 'No' end as result
from
WORK w left outer join org_data o on o.ARB_REF = w.ARB_REFhttps://stackoverflow.com/questions/68912838
复制相似问题