У меня есть поле PropertyValue
в таблице UserProfile
, которое может содержать информацию для адреса, номера телефона, имени, фамилии, имени пользователя, города и т. Д. ... каждая запись в этой таблице связана с пользователем 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
Я не знаю, я бы попробовал это и сравнил производительность с моим решением. Я думаю, вы обнаружите, что моя работает намного лучше, если таблица большая, и у вас много полей для сборки (потому что это решение использует объединение для каждого поля). – automatic