加入嵌套DISTINCT

时间:2015-01-08 15:07:13

标签: sql ms-access join nested distinct

我正在用MS Access编写SQL语句,我想知道如何在JOIN中嵌套SELECT DISTINCT语句?

目前我正在编写2个查询以获得输出(2个步骤):

第一个查询是一个简单的DISTINCT语句。 第二个查询是在1中创建的查询的JOIN。

如何在联接中嵌套DISTINCT语句以便在一个步骤中执行操作?

SELECT DISTINCT tblFinalIssuerNames_ReverseRepos.ISIN, tblFinalIssuerNames_ReverseRepos.IssuerCode
FROM tblFinalIssuerNames_ReverseRepos;


SELECT QSel_CollateralReposII.ISIN, QSel_CollateralReposII.MarketValueUSD, QSelDistinctISINs.IssuerCode
FROM QSel_CollateralReposII INNER JOIN QSelDistinctISINs ON QSel_CollateralReposII.ISIN = QSelDistinctISINs.ISIN;

我正在考虑类似下面的内容,但语法错误......

SELECT QSel_CollateralReposII.ISIN, QSel_CollateralReposII.MarketValueUSD, tblFinalIssuerNames_ReverseRepos.IssuerCode
FROM QSel_CollateralReposII INNER JOIN tblFinalIssuerNames_ReverseRepos ON SELECT DISTINCT QSel_CollateralReposII.ISIN = tblFinalIssuerNames_ReverseRepos.ISIN;

1 个答案:

答案 0 :(得分:2)

我无法测试允许的内容和Access中的内容,但您可以将查询中的QSelDistinctISINs替换为定义它的查询,只需将其放在括号内并为其指定别名即可 - d以下{。}}这是有效的SQL语法:

SELECT 
    r.ISIN, 
    r.MarketValueUSD, 
    d.IssuerCode
FROM 
    QSel_CollateralReposII  r
  INNER JOIN 
    ( SELECT DISTINCT 
          ISIN,
          IssuerCode
      FROM 
          tblFinalIssuerNames_ReverseRepos
    ) d
    ON r.ISIN = d.ISIN ;