首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JOIN和CASE MORE表

JOIN和CASE MORE表
EN

Stack Overflow用户
提问于 2021-08-24 19:05:51
回答 1查看 38关注 0票数 0

我有两个表;第一个ORG包含以下列:

代码语言:javascript
复制
ORG_REF, ARB_REF, NAME, LEVEL, START_DATE

第二个WORK包含以下列:

代码语言:javascript
复制
ARB_REF, WORK_STREET - WORK_NUM, WORK_ZIP 

我想做以下事情:写一个在工作中搜索的select查询,看看WORK_STREETWORK_ZIP是否重复在一起,然后你应该看看WORK_NUM。如果相同,则输出值‘ok’,但如果WORK_NUM不相同,则输出'not ok‘

我写了这个SQL查询:

代码语言:javascript
复制
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。

有谁能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2021-08-24 20:00:35

虽然可以通过向已经启动的查询添加一个左外部联接来实现结果,但只使用count() over...可能是最简单的方法。

代码语言:javascript
复制
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_REF
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68912838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档