これが SQL クエリで可能かどうかはわかりませんが、やってみます。
SQL データベースに接続してクエリを実行し、その結果セットをグリッドビューにデータバインドする C# で SharePoint Web パーツを開発しています。正常に動作していますが、小さなひっかかりがあります。ほとんどの場合、クエリはすべてのフィールドに対して 1 つの結果のみを返します。情報を縦に表示しているので、おおよそ次のようになります。
Customer Name Mr. Customer
Customer Address 980 Whatever St.
Customer City Tallahassee
すべて正常に表示されます。ただし、データベース内のテーブルの 1 つは、ほぼ常に複数の結果を返します。各顧客は明らかに 1 つの名前、1 つの住所、1 つの都市などを持ちますが、すべての顧客は少なくとも 1 つの製品を持ち、その製品には少なくとも 1 つの材料。その情報を単独で表示するとしたら、次のようになります。
Product Steel Type Wood Type Paper Type
-----------------------------------------------------------------------------
Widget Thick Oak Bond
Whatsit Thin Birch
Thingamabob Oak Cardstock
理想的には、最終結果は次のようになると思います。
Customer Name Mr. Customer
Customer Address 980 Whatever St.
Customer City Tallahassee
Widget Steel Thick
Widget Wood Oak
Widget Paper Bond
Whatsit Steel Thin
Whatsit Wood Birch
Thingamabob Wood Oak
Thingamabob Paper Cardstock
別の許容可能な結果は、次のようなもので、いくつかの列を追加しますが、それらのフィールドに対して複数の結果のみを返します。
Customer Name Mr. Customer
Customer Address 980 Whatever St.
Customer City Tallahassee
Product Steel Type Wood Type Paper Type
Widget Thick Oak Bond
Whatsit Thin Birch
Thingamabob Oak
私はどんな提案にもオープンです。可能であれば、これを別のクエリなしで結果セットに含めたいと思います。データを取り込むために使用しているコードは次のとおりです。
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds, "Specs");
DataSet flipped_ds = FlipDataSet(ds);
DataView dv = flipped_ds.Tables[0].DefaultView;
GridView outputGrid = new GridView();
outputGrid.ShowHeader = false;
outputGrid.DataSource = dv;
outputGrid.DataBind();
Controls.Add(outputGrid);
SQL クエリをリストしますが、膨大です。現在、100 をはるかに超えるフィールドを引き込んでおり、SUBSTRING の書式設定と連結が多数行われているため、スペースが無駄になりますが、実際には AS ステートメントでフィールドを選択して取得するかなり単純なクエリです。必要な名前を付け、いくつかの LEFT JOIN を使用して、いくつかのクエリを実行せずに必要なデータを取得します。製品/材料テーブルのスキーマは次のようになります。
fldMachineID
fldProductType
fldSteel
fldWood
fldPaper
したがって、明らかに、各顧客には、異なる fldProductType 値ごとに 1 つずつ、多数のエントリがあります。何かを省略している場合は、追加できます。みんなの時間と助けに感謝します!