2016-03-06 17 views
0

我有兩個表:Incomings and Expenditures。 Incomings已IncDate和IncCost和支出已ExpDate和ExpCost。 IncCost和ExpCost以雙精度存儲,IncDate和ExpDate以字符串dd/MM/yyyy存儲(我知道的錯誤練習)。我正在嘗試合併IncDate和ExpDate,並總結每天的費用。我正在嘗試將這些數據添加到數據表中,以便我可以使用它創建圖表。我得到的錯誤說:「關鍵字'AS'附近的語法不正確」,雖然這就是它所說的,所以它沒有多大用處。 這裏是我使用的嘗試和創建這個數據表做兩個表上的完整外連接來創建數據表asp.net c#

DataTable dt = new DataTable(); 
    public DataTable DatatableNew() 
    { 

     SqlDataAdapter Adp = new SqlDataAdapter("select CONVERT(DATETIME, IncDate, 103) AS IncDate, SUM(IncCost) AS IncCost, CONVERT(DATETIME, ExpDate, 103) AS ExpDate, SUM(ExpCost) AS ExpCost from Incomings i FULL OUTER JOIN Expenditures e ON i.IncDate = e.ExpDate AS FinalDate GROUP BY CONVERT(DATETIME, FinalDate, 103) ORDER BY CONVERT(DATETIME, FinalDate, 103)", con); 
     dt.AcceptChanges(); 
     Adp.Fill(dt); 
     return dt; 

    } 

任何幫助是極大的讚賞的代碼。提前歡呼

回答

1

錯誤與您在ON子句中使用的「AS FinalDate」語句(在下面的查詢中以粗體顯示)有關。不知道爲什麼As子句突然在ON子句中爆發。 SQL中的ON子句不允許使用列(使用AS關鍵字)進行別名混淆。嘗試修復以解決您的問題。如果FinalDate是計算字段,那麼應該在SELECT子句中。

SELECT CONVERT(DATETIME, IncDate, 103) AS IncDate, 
SUM(IncCost) AS IncCost, 
CONVERT(DATETIME, ExpDate, 103) AS ExpDate, 
SUM(ExpCost) AS ExpCost 
FROM Incomings i 
FULL OUTER JOIN Expenditures e 
ON i.IncDate = e.ExpDate 
AS FinalDate 
GROUP BY CONVERT(DATETIME, FinalDate, 103) 
ORDER BY CONVERT(DATETIME, FinalDate, 103)

希望這會有所幫助!

+0

謝謝你的回答。 FinalDate不是我的表中的字段我希望在我的數據表中創建一個新的列,該列將被稱爲FinalDate,並將包含我的IncDate和ExpDates組合。不知道是否有可能! – Stuart

+0

IncDate和ExpDates的含義是什麼?您是否想將它們作爲附加字符串保存在數據表中的每個記錄的名爲FinalDate的新列中?我真的很想知道即使你最終這樣做了,也能解決什麼問題。 – RBT

+0

我正在創建一個dotnethighchart:http://stackoverflow.com/questions/35802637/dotnet-highchart-cost-not-being-plotted-against-the-correct-date-asp-net-c-sharp(這是我的問題)。當我在該問題中連接IncDate和ExpDate時,日期只是隨機添加在一起,而不是按照我希望的順序添加。我不確定解決這個問題的最好方法。我在十字路口 – Stuart