我在UserProfile
表中有一个名为PropertyValue
的字段,其中可以包含地址,电话号码,名字,姓氏,用户名,城市等信息......此表中的每个记录都通过UserId与用户相关联,它也与一个ProfilePropertyDefinition
关联,其中包含每个属性(即PropertyName)的定义。如何从SQL Server中的一个数据库字段创建多个列?
通过这种关系,我可以得到所有的属性值及其属性名称。我想怎么做才能提取这两列(的PropertyValue,属性名)的数据,并创建一个类似的表:
First Name | Last Name | Email | Phone | City | Country
-------------------------------------------------------
| | | | |
所以,我想知道我是否可以使用SQL语句来完成这一点,这是我走在它:
SELECT FirstName = (SELECT PropertyValue FROM UserProfile WHERE PropertyDefinitionID = (SELECT PropertyDefinitionID WHERE PropertyName = 'first name')),
LastName = (SELECT PropertyValue FROM UserProfile WHERE PropertyDefinitionID = (SELECT PropertyDefinitionID WHERE PropertyName = 'last name')),
Email = (SELECT PropertyValue FROM UserProfile WHERE PropertyDefinitionID = (SELECT PropertyDefinitionID WHERE PropertyName = 'email'))
但是,没有工作,有些事情似乎很奇怪吧......任何人都知道如何采取一列,显示它在几个不同列中的值?
为什么有人对此赞不绝口吗?什么使得这个答案比其他人更好?我想知道,所以我可以选择最好的答案... – Matt 2009-07-28 21:05:22
我不知道,我会尝试这一点,并将性能与我的解决方案进行比较。我认为如果表格很大,并且你有很多要建立的字段(因为这个解决方案使用每个字段的联接),你会发现我的表现要好得多。 – automatic 2009-07-31 18:26:24