在一个字段中分隔数据,在同一个表中的另一个字段中引用

时间:2015-10-23 09:28:36

标签: sql database-design

正如你可以猜到我的问题是如何表达的,我没有很大的SQL技能。

我们有一个新的数据库,其中包含一个包含所有“答案”的表格。在一个领域。然后,我们在同一个表格中有另一个字段,其中包含“答案”的标识符。领域。我想要做的是根据标识符为每个答案创建一个单独的字段。

数据的一个例子是:

IDENTIFIER         ANSWER
property type      House
vehicle            Car
property type      Bungalow
property type      House
vehicle            Van

我想要的是:

VEHICLE         PROPERTY TYPE
car             House
van             Bungalow

我希望这是有道理的。

2 个答案:

答案 0 :(得分:0)

我无法看到你的房产类型和车辆如何连接在同一排......这是我能做的最好的,如果你可以根据你把它们放在同一个地方来解释我们我可以改变这个查询

但这是我到目前为止所得到的......

Create table #TempTest (Identifier nvarchar(100), Answer nvarchar(100))

insert into #TempTest (Identifier, Answer)
values
('property type',      'House'),
('vehicle',            'Car'),
('property type',      'Bungalow'),
('property type',      'House'),
('vehicle',            'Van')

Select distinct ISNULL([property type],'') [property type],
            ISNULL([vehicle],'') [vehicle]
   from (
      select Row_Number() over (order by [identifier], [Answer]) as 'RowNum',  identifier, Answer from #TempTest
   ) src
PIVOT
(
     MAX(Answer) for identifier IN ([property type],[vehicle])
) piv1

它会给你这样的结果:

  property type      vehicle
                      Car
                      Van
    Bungalow    
     House  

答案 1 :(得分:0)

这是一种常规的设计模式。一些文献称其为递归参考,其他文献称其为反射性参考。

外键表示ER的意义上的关系。引用同一表中不同行的外键仅表示同一实体的两个实例之间的关系。

示例:员工与主管,另一名员工之间的关系。