【问题标题】:Access SQL Query from another Query从另一个查询访问 SQL 查询
【发布时间】:2018-06-14 08:21:13
【问题描述】:

我对一段 SQL 代码有一点问题。我有一个表 Paiements_17_18,我想创建一个单行查询来计算:

  • 金额字段的总和,
  • Date_Regulation 字段的第一个日期,
  • Date_Regulation 字段的最后日期,
  • N_Facture 字段的不同值。

所有这些都来自SELECT TOP n FROM ....样式的子请求

我试过这个:

SELECT Sum(P.Montant) AS TotalMontant, 
       First(P.Date_Regulation) AS PremièreDate, 
       Last(P.Date_Regulation) AS DernièreDate, 
       First(P.N_Facture) AS PremièreFacture, 
       Last(P.N_Facture) AS DernièreFacture, 
       (SELECT Count(N_Facture) 
        FROM (SELECT DISTINCT N_Facture FROM Paiements_17_18)) AS NombreFactures

FROM (SELECT TOP 5 Paiements_17_18.* 
      FROM Paiements_17_18 
      ORDER BY Paiements_17_18.ID_Paiement DESC) AS P;

但是我得到一个“P”的错误

(Microsoft Access 数据库引擎找不到输入表或 查询“P”。确保它存在并且它的名字是拼写的 正确)

你能帮帮我吗?

【问题讨论】:

  • 如果删除生成 NombreFactures 的 2 行,会报错吗?
  • 按照您的逻辑从我的示例数据中,我无法重现错误。通过查看语法,我看不出为什么会引发错误。确保这个确切的查询正在生成该错误。可能您的实际不包括表别名P
  • @kc2018;是的,当我删除生成 NombreFactures 的行时,不再有错误!
  • @Parfait;我没有包括表的别名 P 是什么意思
  • 我是说在您的实际查询中,您可能已经错过了最后的P,即使它已发布在这里。很奇怪!我测试了SELECT Count(...) FROM (SELECT DISTINCT ...) 没有问题!

标签: sql ms-access subquery


【解决方案1】:

生成 NombreFacture 字段的 2 行导致错误:

(SELECT Count(N_Facture) 
        FROM (SELECT DISTINCT N_Facture FROM Paiements_17_18)) AS 
NombreFactures

替换了两行。见下文。

SELECT Sum(P.Montant) AS TotalMontant, 
       First(P.Date_Regulation) AS PremièreDate, 
       Last(P.Date_Regulation) AS DernièreDate, 
       First(P.N_Facture) AS PremièreFacture, 
       Last(P.N_Facture) AS DernièreFacture, 
       (SELECT Count(n.N_Facture_distinct) 
        FROM (SELECT DISTINCT N_Facture as N_facture_distinct FROM Paiements_17_18 ) AS n) 
        AS NombreFacture 
FROM (SELECT TOP 5 Paiements_17_18.* 
      FROM Paiements_17_18 
      ORDER BY Paiements_17_18.ID_Paiement DESC) AS P;

【讨论】:

  • @kc2018;我收到一个错误“访问循环引用由查询定义的 SELECT 列表中的别名 [N_Facture] 引起”:(
  • 我已将变量名从 N_facture 更改为 N_facture_distinct
  • @HoucineAdsens ...请提供Paiments_17_18的样本数据,以便我们完全重现问题。
  • @kc2018;终于成功了,非常感谢你,但如果你允许我还有另一个问题。我想从 P 中计算 The Destinct [N_Facture],而不是从表中!例如,如果我有 SELECT TOP 5,我只想计算前 5 条记录的 destinct [N_Facture]。不是从所有表格中
  • @HoucineAdsens;尝试 count(distinct P.N_Facture) 而不是 2 行子查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多