1

我正在尝试编写 SQL 查询来完成图形图表,但不确定如何正确执行。这是情况。图表类型是条形图,我想在 Y 轴上列出“消息类型”,在 X 轴上列出“消息数”,对于 Y 轴上的每个值,创建一个堆叠条形图,其数量为“消息类型”中每个用户的消息。像这样的东西:http ://www.highcharts.com/demo/bar-stacked

我要返回的是:

SELECT COUNT(Messages.MessageId), Messages.UserName, MessageTypes.Description

这真的很简单,但我的问题是我希望在 Y 轴上拥有所有可能的“消息类型”,即使根本没有“消息”链接到它们(在这种情况下将 0 作为 COUNT)。

我试过这个,但它不起作用:

FROM MessageTypes 
LEFT OUTER JOIN Messages ON MessageTypes.MessageTypeId = Messages.MessageTypeId

有任何想法吗?

提前感谢您提供的任何帮助。

4

1 回答 1

1

编辑:你改变了我的问题!;)

按描述和用户名分组,计数记录,并左外连接 b/t 消息和用户:

select
    mt.Description MessageTypeDescription
    , m.UserName -- will be null if no messages exist for a given type
    ,  UserMessageTypeCount = case when m.UserName is null then 0 else COUNT(1) end
from
    MessageTypes mt
    left outer join Messages m
     on mt.MessageTypeId = m.MessageTypeId
group by
    mt.Description
    m.UserName

结果将是每个用户每种消息类型的消息数量

于 2013-03-28T09:35:27.473 回答