我一直在尝试从IDataReader
获取值,但最近我无法从我查询的第二个表中获取数据。有人可以帮我找到一种方法来获取它们。以下是我到目前为止的情况:
using (SqlCommand command = new SqlCommand(@"SELECT name, value from Company.dbo.A;SELECT sum(value) from Company.dbo.A ", connection))
{
command.Notification = null;
SqlDependency dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
if (connection.State == ConnectionState.Closed)
connection.Open();
using (var reader = command.ExecuteReader())
return reader.Cast<IDataRecord>()
.Select(x => new LocationInfo()
{
Names = x.GetString(0),
Values = Math.Round(x.GetDouble(1), 2).ToString("#,##0.00"),
ValuesDouble=x.GetDouble(1),
SumVol=x.GetDouble(2)//this line does not work(index out of bounds error)
}).ToList();
}
因此,如何获得我为SUM(value) into SumVol
创建public double SumVol { get; set; }
的第二个SQL命令?
答案 0 :(得分:1)
您需要致电reader.NextResult()
让读者输出第二个结果集。您可能需要在两次传递中执行此操作,或者重新构建查询以在单个结果集中执行此操作。
这是一个查询,为您提供每个唯一名称的总和
SELECT name, value, SUM(value) OVER (PARTITION BY name) from Company.dbo.A;
这是一个使用子查询来获取每行打印总和的方法
SELECT name, value, (SELECT sum(value) from Company.dbo.A) from Company.dbo.A;