我想數據綁定到一個GridView控件,但始終未能SQL:附近有語法錯誤('
考慮下面的代碼(SQL擴展到多行的可讀性):
protected void Page_Load(object sender, EventArgs e)
{
string dsn = "foo";
string sql = "SELECT * FROM (SELECT F.Project AS 'Project Number', F.Account AS
'Account', F.Pd AS Period, F.Incurred AS Totals, C.Project AS
'Project Name' FROM Ultron.Final F INNER JOIN Ultron.Custom
C ON F.Project = C.Project WHERE F.Project LIKE '61000.003%' AND
F.Account NOT LIKE '%-01' AND F.Fy = YEAR(GetDate())) Budget PIVOT
(SUM(Totals) FOR Period in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],
[11],[12]) AS PivotTable";
using (SqlConnection conn = new SqlConnection(dsn))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
testGrid.DataSource = reader;
testGrid.DataBind();
}
}
我確定這個錯誤與查詢中的圓括號有關,但這些都是查詢工作所必需的。在SSMS中測試時,查詢通過時沒有問題。
我該如何重構這個代碼不會失敗?
編輯
我錯過As PivotTable
到SQL查詢的末尾。它現在有效。對不起,這是一個無辜的錯字。感謝所有回覆的人。
「BudgetPIVOT」之間缺少空格。如果您從代碼中刪除SQL,則應該嘗試在SSMS中執行它,這將有助於您調試問題。 – Taryn
你可以把你的硬編碼查詢轉換成一個存儲過程,然後調用那個SP? –
'BudgetPIVOT'應該是'Budget PIVOT'嗎?或者這只是一個複製過去的錯誤? – outcoldman