MSChart-强制从原点绘制折线图

本文关键字:绘制 折线图 原点 MSChart- | 更新日期: 2023-09-27 18:19:28

我有一个从以下MSSQL查询运行的数据绑定图表-

"SELECT dateinvoiced AS Date, (SELECT SUM(value) FROM jobs WHERE dateinvoiced >= '" + 
new DateTime(year, month, 1).ToString("yyyy-MM-dd") + "' AND dateinvoiced <= 
j.dateinvoiced)/100 AS Revenue FROM jobs j WHERE dateinvoiced >= '" + new 
DateTime(year, month, 1).ToString("yyyy-MM-dd") + "' AND dateinvoiced <= '" + new 
DateTime(year, month, daysInMonth).ToString("yyyy-MM-dd") + "' GROUP BY dateinvoiced"

(请原谅我想象的处理日期的奇怪方式,长话短说,但我很快就会改变它们。)

该查询获取用户的业务在日历月内按天完成的工作所花费的累计资金总额。图表本身将其与当月的目标值进行比较,这样用户就可以看到实现月度目标的进展。这方面的情况都很好,查询也很好。这个问题在月初出现。

从上面的查询中画出的线显然是从第一个数据点开始的。如果用户直到一个月的一半才拿到任何钱,然后拿到了一个很大的值,那么图表上就不会画线,因为只有一个点。它将一直保持这样,直到用户在晚些时候拿钱,这时他们可以看到一条线。

我想要的是确保图表上始终有一条从原点开始的线,即使用户只有一天的数据。

我自己能做到这一点的唯一方法是检查数据绑定前第一天是否有数据,以及是否没有简单地将零值销售的记录插入表中。我相信你能理解为什么这是不可接受的。有没有一种方法可以手动将点添加到数据绑定表中?我试过了,但似乎做不到。如果做不到这一点,是否有某种方法可以更改SQL查询,为每个日期提供一个值,即使不是所有日期都有数据?或者任何其他方法?

谢谢。

MSChart-强制从原点绘制折线图

正如评论中所建议的,我相信如果您可以将系列设置为Column类型而不是Line类型会更容易,因为所有的日子都不需要与之相关联的记录。

如果你想让所有这些日期都可用,那么一个可以输出所有日期的查询就很好了,然后你可以在你需要的集合中加入它来获得这些值。用零代替你没有的值。

WITH AllDays
AS
(
    SELECT CAST('20120101' as datetime) AS DAYS
    UNION ALL
    SELECT DATEADD(dd, 1, DAYS)
    FROM AllDays
    WHERE DATEADD(dd, 1, DAYS) < cast('20120201' as datetime)
)
SELECT DAYS
FROM AllDays -- consider making the join here as you need