【问题标题】:Microsoft Access From SQL Database Query Select Count Distinct IssueMicrosoft Access 从 SQL 数据库查询中选择计数不同的问题
【发布时间】:2011-10-21 14:07:13
【问题描述】:

我有一个问题:

SELECT COUNT(DISTINCT dbo_tblBidder.bidder_id) AS TotalRegistrants, 
    SUM(dbo_tblItem.item_premium + dbo_tblItem.item_pr) AS SumTotal, 
    dbo_tblBidder.bidder_type

FROM dbo_tblBidder LEFT OUTER JOIN dbo_tblItem ON 
    dbo_tblItem.item_bidder_number = dbo_tblBidder.bidder_number AND 
    dbo_tblItem.item_sale_id = dbo_tblBidder.bidder_sale_id

WHERE (dbo_tblBidder.bidder_sale_id = 235)

GROUP BY dbo_tblBidder.bidder_type

当我尝试在 MS Access 中执行此操作时,我被告知:

Missing oporator 'COUNT(DISTINCT dbo_tblBidder.bidder_id)'

当我单击“确定”时,它会突出显示“dbo_tblBidder”。这个查询在 SQL 服务器上运行得很好,我不知道 MS Access 认为缺少什么操作符。任何帮助将不胜感激。

更新:

我实际上不得不尝试:

SELECT     Total.count, SUM(dbo_tblItem.item_premium + dbo_tblItem.item_pr) AS SumTotal, dbo_tblBidder.bidder_type
FROM         dbo_tblBidder LEFT OUTER JOIN
                  dbo_tblItem ON dbo_tblItem.item_bidder_number = dbo_tblBidder.bidder_number   AND 
                  dbo_tblItem.item_sale_id = dbo_tblBidder.bidder_sale_id LEFT OUTER JOIN
                      (SELECT     COUNT(bidder_type) AS count, bidder_type
                        FROM          dbo_tblBidder AS tblBidder_1
                        WHERE      (bidder_sale_id = 235)
                        GROUP BY bidder_type) AS Total ON dbo_tblBidder.bidder_type = Total.bidder_type
WHERE     (dbo_tblBidder.bidder_sale_id = 235)
GROUP BY dbo_tblBidder.bidder_type, Total.count
ORDER BY dbo_tblBidder.bidder_type

我正在等待尝试运行它的人的回复,看看这是否对他们有用。

更新:

这不起作用。现在,它告诉我:

查询表达式“中的语法错误(缺少运算符)。

然后,它突出显示 dbo_tblBidder.bidder_number 中的“mber”,其中显示:

dbo_tblItem ON dbo_tblItem.item_bidder_number = dbo_tblBidder.bidder_number

回答:

MS Access to SQL query issue

【问题讨论】:

  • 查看此链接是否有助于警告您有关 Access 和 SQL Server 之间的其他差异:sqlserver2000.databases.aspfaq.com/…
  • @HansUp 谢谢,这将非常有帮助。我实际上也是 SQL 的新手,来自 MySQL。但是不得不去 MS Access 并不是很有趣。我很欣赏这个链接。 =)

标签: sql database ms-access


【解决方案1】:

Access 不支持 COUNT Distinct。如果你需要,你可以试试here这个技巧。

【讨论】:

  • 感谢您的评论。我不太确定该查询中的命令是做什么的,但我不太确定可以将其实施到我需要做的事情中。但是,无论哪种方式,我都更新了我自己的查询,该查询直接在 SQL 中运行,并将查看 MS Access 是否喜欢它。
【解决方案2】:

您在聚合函数(Count 函数)中有一个Distinct。删除distinct,它应该可以正常工作。

如果您仍需要计算不同的bidder_ID,我建议您在单独的查询中提取。

【讨论】:

  • 感谢您的评论,我现在确实看到 MS Access 不喜欢计算不同值。但是,删除它给了我不正确的计数,我需要在同一个查询中使用它。但我重写了自己的查询,该查询在 SQL 中运行,希望 MS Access 也喜欢它。
猜你喜欢
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 2016-08-24
  • 2021-04-01
  • 2011-01-29
相关资源
最近更新 更多