在 SQL Server 2008 中我有一种情况,我需要返回一个动态生成的表,并且列也是动态生成的。
这一切都是由查询生成的,因为我从一个 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
更新:如果我有一张包含汽车制造商的表格,并且我想要通用汽车制造的汽车的所有属性。我会查找汽车的信息,用它来获取所有汽车制造商,这将是通用汽车,然后我想获取通用汽车制造的所有汽车的信息,但是,由于信息是动态生成的列是不同的。那就是我所在的地方,需要动态生成这个表。我很好奇我是否可以调用 Web 服务,获取动态生成的查询,然后让存储过程或函数执行该查询。
更新 2:获得此表后的下一步是,我需要将汽车上的所有选项(在这种情况下)相加,以确定汽车的实际价格。这就是为什么它需要采用表格格式。此时,我正在查看 GM 制造的汽车,但我可以对 SeaRay 制造的船只进行另一个查询,即使船上的表列与汽车不同,查询也应该工作相同。