我目前的架构是这样的:压扁1对多的关系
PersonType (PersonTypeID, Name, Description)
Person (PersonID,PersonTypeID, FirstName, ...)
PersonDynamicField (PersonDynamicFieldID, PersonTypeID, Name, Description, DataType, DefaultValue, ...)
PersonDynamicFieldValue (PersonDynamicFieldValueID, PersonDynamicFieldID, PersonID, Value, ...)
也就是说,一个人是某一类型的。例如,客户。对于每个PersonType
,可以动态地添加附加字段来存储有关PersonType的信息。对于客户,我们可能需要向PersonDynamicField添加字段,例如LikesChocolate,FavoriteColor,HappinessScale等。这些字段的值将存储在PersonDynamicFieldValue中。
我希望我的写作很有意义。
我想什么做的,是可以拉平这种结构,并返回寻找这样的结果的查询:
PersonID, PersonTypeID, FirstName, LikesChocolate, FavoriteColor, HappinessScale
1, 2, Robert, 1, Green, 9
2, 2, John, 0, Orange, 5
...
我有点卡住,真的不知道从哪里开始,甚至。
你能帮忙吗?
非常感谢@bluefeet。这是我寻找的功能,并做我需要的。只是一件事......你能简单地解释一下以“Select @cols ...”开头的声明吗?我知道它做了什么,但不太明白。谢谢。 – PostureOfLearning
@Rob这是为每个人类型id生成不同字段名称的列表。当使用PIVOT时,必须在运行时知道列,以便代码行创建列名称的列表。 – Taryn