2012-01-04 37 views
0

我有一個數據綁定圖表運行從以下MSSQL查詢畫 -的MSChart - 強制線圖,從產地

"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" 

(請原諒我想象空間的處理日期,一言難盡一種奇怪的方式,但我很快就會改變它們。)

該查詢獲取用戶業務在日曆月中每天完成的工作所累積的金額。圖表本身將該數據與當月的目標數值進行比較,因此用戶可以看到每月目標的進展情況。事情的這一面都工作正常,查詢也是如此。問題出現在月初。

從上面的查詢繪製的線顯然是從第一個數據點開始的。如果一個用戶在一個月的中途沒有拿到任何錢,然後獲得一個大的值,那麼由於只有一個點存在,因此在圖表上不會繪製任何線。它會一直保持這樣的狀態,直到用戶晚些時候拿到錢,然後他們才能看到一條線。

我想要的是確保始終有一行可以從原始圖上看到圖表,即使用戶只有一天的數據。

我自己能夠做到這一點的唯一方法是檢查數據綁定之前第1天是否有數據,以及是否沒有簡單地將零價值銷售記錄插入表中。我相信你可以看到爲什麼這是不可接受的。有沒有辦法將一個點手動添加到數據綁定表上?我試過了,似乎無法做到這一點。如果沒有,那麼是否有某種方法可以改變SQL查詢,以便爲每個日期賦予一個值,儘管數據對於它們都不存在?或者任何其他方法呢?

謝謝。

+0

多少個系列?顯示了什麼其他的東西? – V4Vendetta 2012-01-04 10:36:15

+0

整個圖表使用了2個系列,但就目前的問題而言,它可能是獨立的,只要我能看到,但我可能是錯的。該圖表有一個系列顯示了所描述的行,另一個系列顯示了該月的最後一天從原點到月度目標值(例如50,000英鎊)的直線。 – Hecksa 2012-01-04 10:49:14

+0

好,你可以嘗試設置'EmptyPointStyle.Color' =你的系列線的顏色 – V4Vendetta 2012-01-04 11:00:02

回答

0

正如評論中所建議的那樣,如果您可以將系列設置爲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 
+0

太棒了,我會給SQL提示一下。感謝所有的幫助。 – Hecksa 2012-01-04 12:18:01