加入和过滤掉不必要的数据

Posted

技术标签:

【中文标题】加入和过滤掉不必要的数据【英文标题】:Joining and filtering out unnecessary data 【发布时间】:2015-08-13 17:11:22 【问题描述】:

我需要构建具有以下要求的查询。

要使用的两个表是

MASTER_ARCHIVE 和 REP_PROFILE

到目前为止,我们只对电汇公司的代表感兴趣:富国银行、摩根士丹利、瑞银、美林证券 要仅从这些公司获得代表,我需要按公司 ID 过滤 Rep Profile 表(可以在公司表中找到公司 ID),并且可以在 FIRM_CRD 上过滤 Master Archive 表

我们需要两组数据: 1) 在 Master Archive 表中但不在 Rep Profile 表中的电线电缆代表列表 2) 在 Rep Profile Table 中但不在 Master Archive 表中的wirehouse 代表列表

是否有人知道我将使用什么类型的联接和过滤条件来获取我正在寻找的数据?

这是我目前想出的!!!!

SELECT *
FROM MASTER_ARCHIVE E 
Left JOIN REP_PROFILE R 
ON E.REP_CRD = R.CRD_NUMBER
WHERE E.FIRM_ID IN ('F206','F443','F474','F458')

MINUS

SELECT *
FROM MASTER_ARCHIVE E 
JOIN REP_PROFILE R 
ON E.REP_CRD = R.CRD_NUMBER
WHERE E.FIRM_ID IN ('F206','F443','F474','F458')
--ORDER BY NAME Name

【问题讨论】:

在不知道表中的字段、示例数据或两个表如何相互关联的情况下,这里有点盲目。你有没有尝试过任何东西,或者你只是得到了要求并前往 SO? @JNevill 感谢您的回复。我已经用我提出的当前查询编辑了原始帖子。我认为我走在正确的道路上,但我仍然无法获得我正在寻找的数据。 【参考方案1】:

我不是很懂,但是试试这个

SELECT *
FROM MASTER_ARCHIVE E 
LEFT JOIN REP_PROFILE R 
ON E.REP_CRD = R.CRD_NUMBER
WHERE E.FIRM_ID IN ('F206','F443','F474','F458')
AND R.CRD_NUMBER IS NULL

【讨论】:

以上是关于加入和过滤掉不必要的数据的主要内容,如果未能解决你的问题,请参考以下文章

Spark上的Scala [自加入后过滤掉重复的行]

如何在 Oracle SQL 中查找和过滤同一张表上的数据

过滤掉基于数据的有效数据和期限数据

对json数据进行过滤

如何根据与已知参考轨迹的距离过滤掉位置数据?

按 id 和某些条件过滤掉数据分组