【问题标题】:SQL Access " Count "? [closed]SQL 访问“计数”? [关闭]
【发布时间】:2016-07-12 15:27:19
【问题描述】:
table

Name  tap
aa     1
aa     1
aa     2
bb     2
aa     3
cc     1
bb     2
bb     3
cc     2

结果??????

name  Count(1)   Count(2)   Count(3)
aa      2           1          1
bb      0           2          1
cc      1           1          0

??????

【问题讨论】:

  • 欢迎来到 StackOverflow!您正在向我们展示您的数据是什么样的以及您希望查询产生什么,但您还没有提出任何问题。你写过查询吗?您在获得此特定结果时遇到问题吗?另外,请阅读How to Ask,了解有关如何改进您的问题的一些有用提示。

标签: sql ms-access


【解决方案1】:

您不能使用 Count,因为它会这样做 - 计算每个 Name 的记录数,而忽略 tap 的值.

但是您检查 tap 的值并将这些匹配项相加。然而,当 SQL Server 为匹配返回 1 时,Access 返回 -1,因此 - 对于通用解决方案 - 您可以将 Abs 应用于 always有一个正数。

然后你会得到这样的查询:

Select
    [Name],
    Abs(Sum(tap=1)) As Count1,
    Abs(Sum(tap=2)) As Count2,
    Abs(Sum(tap=3)) As Count3
From
    YourTable
Group By
    [Name]

输出将是:

Name  Count1  Count2  Count3
aa         2       1       1
bb         0       2       1
cc         1       1       0

【讨论】:

  • 有趣。对正确答案投反对票。复活节快乐!
  • 我猜你的答案正在经历Is it okay to downvote answers to bad questions?的争议。
  • 我否决了这个答案有两个原因 - 第一个是这是一个纯代码的答案,第二个是提问者确实没有提出问题
  • @Sculper:好的,这是一个有效的观点,尽管我相信一个迟钝的问题需要一个迟钝的答案。添加了说明。
  • @Andre:是的,讨论涵盖了它。我注意到最高票数是:“答案应该根据自己的优点投赞成票或反对票。”这里似乎并非如此,而是“虽然用户不参与投票欺诈,但他们可以随心所欲地投票。”。通常我只是避免处理“坏”问题,但是 - 虽然 隐含 - 这个问题对我来说很清楚,并且提问者是新来的,我认为没有理由没有提供正确的答案。
猜你喜欢
  • 1970-01-01
  • 2014-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多