C# 在sql中传递数据透视点的值时出错
C#查询生成器的代码C# 在sql中传递数据透视点的值时出错,c#,sql,sql-server,C#,Sql,Sql Server,C#查询生成器的代码 DataSet ds = new DataSet(); SqlParameter[] p = new SqlParameter[3]; p[0] = new SqlParameter("@UserID", UserID); p[1] = new SqlParameter("@idAssessment", id); p[2] = new SqlParameter("@idAssessment1", id1); //string Query = "Select intMa
DataSet ds = new DataSet();
SqlParameter[] p = new SqlParameter[3];
p[0] = new SqlParameter("@UserID", UserID);
p[1] = new SqlParameter("@idAssessment", id);
p[2] = new SqlParameter("@idAssessment1", id1);
//string Query = "Select intMark from QuiestionPaper Where intQstnSlNo=@SlNo and intQstnMasterID=@QstnMasterID";
string Query = "SELECT Topics,['@idAssessment'] as GGG,['@idAssessment1'] as BBB, case when ['@idAssessment'] = 0 or ['@idAssessment'] IS null then ['@idAssessment1']*100 else ( isnull(['@idAssessment1'],0) - ['@idAssessment'])/['@idAssessment']*100 end AS PercentageImproveBBBB from ( SELECT fltTotalMark as [TMark], intQstnMasterID as [assid] ,vchTopic as [Topics] from ManageAssessment WHERE intUserID=174)AS S pivot(SUM(TMark)FOR assid IN (['@idAssessment'], ['@idAssessment1']))AS s";
try
{
ds = DataLayer.SqlHelper.ExecuteDataset(Utilities.GetConnectionString(Utilities.DataBase.Cobels), CommandType.Text, Query, p);
return ds.Tables[0];
}
catch { }
return null;
在sql中,如果我将一个参数值放在其中,它工作正常,但在c#中给出错误,有人能帮我解决吗?尝试以下方法:
['"+@idAssessment+"']
答案是:在查询中,像这样传递一个值
[“+idAssessment+”]
,错误是什么?您不能以您尝试的方式对其进行参数化-PIVOT
的In()
子句中提供的是一组列名,而不是字符串。这些列也将出现在结果集中,对于任何特定查询,结果集中列的数量、名称和类型都是固定的。这将自动标记为低质量,因为它只是代码。你介意添加一些文字来解释它/它是如何解决问题的吗?