如何将一行中的行翻转到第二个表的列中?

时间:2015-12-15 18:33:29

标签: sql sql-server

如何从表FormField获取行值并在表Registrant中创建一列?不知何故,它还需要足够聪明才能知道列是否已经存在。

基本上我是将第1个表中的行翻到第2个表的列中。

我现在拥有的是手动输入的内容。但是我需要对其进行编码才能执行此操作。这会是一个触发器,或者我怎么能正确地做到这一点?

FormField表包含ColumnName列,一行为FirstName。

enter image description here

注册人表包含应对应的列,例如列FirstName

enter image description here

它必须是"万无一失的"因为如果其他人将FirstName输入ColumnName,它不应该尝试添加另一个FirstName列。这也意味着它应该重新格式化字符串以作为适当的列(正确的情况,没有空​​格等)。

1 个答案:

答案 0 :(得分:2)

这将为缺少的字段生成ALTER TABLE命令。 “傻瓜式”应该事先做好:

SELECT 'ALTER TABLE [Registrant] ADD [' + [ColumnName] + '] NVARCHAR(MAX);' 
FROM [FormField] f
        LEFT JOIN syscolumns c ON OBJECT_NAME(c.id) = 'Registrant' 
                              AND c.Name = f.[ColumnName]
WHERE c.id IS NULL