group by子句不显示所有记录

时间:2015-11-21 16:32:52

标签: sql sql-server

在我的项目中,我使用了group by子句的select查询,当我执行它而不是显示9条记录时,它显示了8条记录!一条记录没有显示。 这是我的代码

Reverse for 'category' with arguments '()' and keyword arguments '{'category_name_slug': ''}' not found. 1 pattern(s) tried: ['rango/category/(?P<category_name_slug>[\\w\\-]+)/$']

第一张图片是主要数据,第二张图片是结果。如您所见,记录未显示 picture1

picture2

4 个答案:

答案 0 :(得分:0)

我看到你发布了数据
正如我之前所说,分组只会返回唯一的行
你只有8个独特的 年(RegisterDate),成交量,发行量,类别II 我想你想要一个简单的选择

select year(RegisterDate), CategoryId, Volume, Issue
from Articles
where CategoryId = 14

您在组中有一个聚合 你确定要这么做吗? 试试

select year(RegisterDate), CategoryId, max(Volume), max(Issue)
from Articles
where CategoryId = 14
Group by year(RegisterDate), CategoryId

您将获得唯一年份(RegisterDate),CategoryId仅限该组

答案 1 :(得分:0)

在示例数据中请注意,具有ID 12和13的行共享完全相同的聚合条件(year(RegisterDate),Volume,Issue,CategoryId)。因此,这两行将按照您在查询中的请求分组到一个组中。所有其他人都有不同的价值组合,并组成自己的团体。

答案 2 :(得分:0)

您在“问题”列中有两次“问题3”,对应于“第一卷”,这就是您在进行分组时错过一行的原因。如果你想在你的查询中使用'GROUP BY'语句,那么结果你的8行是正确的,但如果你想要返回9行,你不应该在查询中使用'GROUP BY'语句。我建议使用这样的东西:

SELECT Year(RegisterDate) 'Year', Volume, Issue
FROM Articles
WHERE CategoryId = 14
  AND Title >= 'Article1' AND Title <= 'Article9'

答案 3 :(得分:-1)

谢谢我通过在查询中添加另一列来解决它

select year(RegisterDate),Volume,Issue,CategoryId,Title from Articles where CategoryId=14 Group by  year(RegisterDate),Volume,Issue,CategoryId,Title