sql选择多行到一列

时间:2010-12-09 12:11:42

标签: sql sql-server

对不起,我不知道这是怎么称呼所以我也不知道如何谷歌。我将尝试解释我需要什么。有一个标准的场景,我有一些对象存储表,还有另一个表,包含对象属性。一个对象可以与许多属性相关联。因此,基本上当您需要有关对象的所有数据时,您将加入属性表并接收大量行。在一个场景中,我同时查询大量对象并进行子选择以选择一个属性:

SELECT basic data,
(SELECT some attribute from attributes table) AS attribute1
FROM objects table
JOIN something
JOIN something
...

一切都很好,但我需要从该列表中选择一些其他属性。这样做的最佳方式是什么?我认为再写2个子查询并不是一个好主意。我听说过t-sql中的一些枢轴函数,但我不确定这是否是我需要的。理想情况下,属性将作为新行返回,包含所有其他数据,属性名称是新列名称,属性文本是新列值。但是属性名称可能包含空格等。所以我不确定它们是否可以用作列名,或者是否可以执行这样的选择。

SQL是微软的,但是拥有一些其他数据库引擎也支持的解决方案会很不错。

任何指针或谷歌关键词赞赏;]

2 个答案:

答案 0 :(得分:0)

枢轴不是你需要的。

不要害怕多行,它通常很快。只需使用一些O / RM(NHibernate或EF)。如果遇到性能问题,您可以随时使用NHProf调整查询。

没有O / RM,还有其他两个选择:

  • 发出XML子查询并将列中的所有属性检索为XML列表。

  • 发出两个查询并在客户端上对它们进行排序。 ADO.NET DataSet具有内置的此功能。或者您可以使用IDataReader自己完成。

答案 1 :(得分:0)

制作动态支点的代码在我的回答here