【问题标题】:System.ArgumentException: Column 'COLUMN_NAME' does not belong to tableSystem.ArgumentException:列“COLUMN_NAME”不属于表
【发布时间】:2016-07-15 09:42:16
【问题描述】:

我正在尝试返回一个 SP 结果使用 JSon 方法,就像在本教程中一样,http://prashantjayle.blogspot.com/2015/05/chartjs-with-aspnet-mvc-5.html,但是当我运行它时,我需要的图表不会显示在视图上。

在我的控制器中,我有以下代码:

 public JsonResult GetData()
    {
        DataTable dtTable = new DataTable();
        List<string> lstSales = new List<string>();
        List<string> lstProduct = new List<string>();


        string strQuery = "SP_SALES_PER_PRODUCT";

        SqlConnection con = new SqlConnection (ConfigurationManager.ConnectionStrings["ebms_connection"].ToString());
        SqlCommand cmd = new SqlCommand(strQuery, con);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dtTable);


        foreach(DataRow row in dtTable.Rows)
        {
            lstSales.Add(row["TOTAL_AMT_PER_ITEM"].ToString());
            lstProduct.Add(row["PRODUCT_CODE"].ToString()); 
        }


        var BarChart = new
        {

            SALES = lstSales,
            PRODUCTS = lstProduct
        };
        return Json (BarChart, JsonRequestBehavior.AllowGet);
    }

而错误指向这行代码:

lstSales.Add(row["TOTAL_AMT_PER_ITEM"].ToString());

TOTAL_AMT_PER ITEM 是我在 SP 中调用的列。 这是我的 SP 查询

SELECT p.PRODUCT_CODE, SUM(case when p.PRODUCT_ID=od.PRODUCT_ID and od.ORDER_ID=o.ORDER_ID then od.TOTAL_AMT_PER_ITEM else 0 end)
FROM [ORDER] o
INNER JOIN ORDER_DETAILS od
ON o.ORDER_ID = od.ORDER_ID
INNER JOIN PRODUCT p
ON od.PRODUCT_ID=p.PRODUCT_ID
GROUP BY p.PRODUCT_CODE

我做错了什么?希望有人可以帮助我。谢谢!

【问题讨论】:

    标签: sql-server asp.net-mvc chart.js jsonresult


    【解决方案1】:

    试试下面的查询

    SELECT p.PRODUCT_CODE, SUM(case when p.PRODUCT_ID=od.PRODUCT_ID and    od.ORDER_ID=o.ORDER_ID then od.TOTAL_AMT_PER_ITEM else 0 end) 
    as TOTAL_AMT_PER_ITEM
    FROM [ORDER] o
    INNER JOIN ORDER_DETAILS od
    ON o.ORDER_ID = od.ORDER_ID
    INNER JOIN PRODUCT p
    ON od.PRODUCT_ID=p.PRODUCT_ID
    GROUP BY p.PRODUCT_CODE
    

    您错过了 case 表达式总和的别名,您可以尝试运行原始查询并查看结果集是否具有您所期望的列名。

    【讨论】:

      猜你喜欢
      • 2021-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 2017-12-22
      相关资源
      最近更新 更多