SQL Server 2008 では、動的に生成されたテーブルを返す必要があり、列も動的に生成されます。
1 つの ID から始めて、列の名前と型を取得したため、これがすべてクエリによって生成されました。これがキャストの理由です。
以下は、ある状況で必要なテーブルを返す最終的なクエリですが、この同様のクエリを使用して複数のテーブルを返すことができます。
これは現在 C# で実装されていますが、ストアド プロシージャまたは関数で実行できるはずですが、このクエリを作成してテーブルを返すために複数のクエリを作成する方法がわかりません。
ありがとうございました。
SELECT ResultID, ResultName, ResultDescription,
CAST([233] AS Real) as [ResultColA],
CAST([234] AS Int) as [ResultColB],
CAST([236] AS NVarChar) as [ResultColC],
CAST([237] AS Int) as [ResultColD]
FROM (
SELECT st.*, avt.ResultID as avtID, avt.SomeAttrID, avt.Value
FROM Result_AV avt
JOIN Result st ON avt.ResultID = st.ResultID) as p
PIVOT (
MAX(Value) FOR AttributeID IN ([233], [234], [236], [237])) as pvt
更新: 車のメーカーを含むテーブルがあり、GM 製の車のすべての属性が必要な場合。車の情報を検索し、それを使用してすべての自動車メーカー (GM) を取得します。次に、GM によって製造されたすべての車の情報を取得したいのですが、情報が動的に生成されているため、列異なっています。それが私がいる場所で、このテーブルを動的に生成する必要があります。Web サービスを呼び出すだけで、動的に生成されたクエリを取得し、ストアド プロシージャまたは関数でそのクエリを実行できるかどうかに興味があります。
更新 2: この表を取得した後の次のステップは、車の実際の価格を決定するために、車のすべてのオプション (この場合) を合計する必要があることです。そのため、表形式にする必要があります。この時点で、GM 製の車を見ていますが、SeaRay 製のボートに対して別のクエリを実行することもできます。クエリは、ボートのテーブル列が車とは異なっていても同じように機能するはずです。