2016-11-21 18 views
0

最近質問した2番目のテーブルからデータを取得できませんでした。IDataReaderから値を取得しようとしています。誰かが私にそれらを手に入れる方法を見つけるのを手伝ってもらえますか?ここで私はこれまで持っているものです。複数のテーブルを持つ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(); 
} 

したがって、あなたは、私がのためにpublic double SumVol { get; set; }を作成しているSUM(value) into SumVolである第二のSQLコマンドを得るのですか?

答えて

1

リーダーに2番目の結果セットを出力させるには、reader.NextResult()に電話する必要があります。おそらく2つのパスでそれを行うか、単一の結果セットでそれを行うようにクエリを再構成する必要があります。

ここにここにユニークな名前ごとにあなたの合計を与えるクエリ

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; 
+0

ありがとうあなたの答えは、2つのsqlコマンドから値を取得する方法はありますか?私のクエリはそれよりはるかに複雑であるからです。事前にありがとうございます – MVCNoob

+0

私は最初の段落であなたに言った、 'reader.NextResult()'を使用して2番目の結果セットに切り替え、結果を返す前にリストの値を更新します。 –

+0

私はまだ私がどのようにreader.NextResult()を使用できるか理解していません。私はreaderを使って2を作る必要がありますか?reader.NextResult()をどこに置くのですか?申し訳ありませんが、上記の文脈ではreader.NextResult()の使用例を教えてください。ご注意いただきありがとうございますbtw :) – MVCNoob

関連する問題