如何显示多列

时间:2015-06-16 10:31:12

标签: sql tsql

这是一个施工问题。 通常,当您拥有统计程序格式(R,SPSS)的数据时,每个值都有一个标签(称为值标签)。 让我们说我们有三个人回答的树问题

         Q1|Q2|Q3
Person1||2 |1 |1 
Person2||3 |1 |2 
Person3||3 |2 |3 

这些值中的每一个都有一个值标签

1 = good
2 = neutral
3 = bad

我的目标是将这些数据放入sql server。但我不知道如何做到这一点。我的想法是制作两张桌子

第一张表格保留每个问题的人均答案。这里每个人都获得一个ID,问题是字段。现在我把值和值标签放在第二位。但是这个结构我不知道如何查询一个表,其中所有值都被valuelabels替换。我想我会像

那样进行查询
Select * from Questions
left join labels
on questions.Q1 = labels.Labs

但对于例如1000个问题我必须为每个问题添加最后一行吗?任何人都可以帮我建造桌子,我不想犯错误。

根据以上示例的结果'看起来像:

         Q1      |Q2      |Q3
Person1||neutral |good    |good 
Person2||bad     |good    |neutral 
Person3||bad     |neutral |bad 

2 个答案:

答案 0 :(得分:1)

Select * 
from Questions
left join labels as l1
on questions.Q1 = l1.Labs
left join labels as l2
on questions.Q2 = l2.Labs
left join labels as l3
on questions.Q3 = l3.Labs

答案 1 :(得分:0)

如果1,2和3总是好的,中性的和坏的,你可以将它们存储在一种键/值对表中

    CREATE TABLE AnswerCodes(
        [AnswerValue] INT NOT NULL,
        [AnswerCode] VARCHAR(10) NOT NULL --can make the column wider to store bigger values
    )

    SELECT Q.AnswerValue, AC.AnswerCode
    FROM [Questions] Q
    JOIN [AnswerCodes] AC
        ON Q.[AnswerValue] = AC.[AnswerValue]

现在,只需拉一列就可以获得良好的效果。如果您确实需要将标签应用于多列答案值,则可以

  • 加入[AnswerCodes]以获取所有值列,或
  • 使用数据透视表将每个人的结果转换为一行,并将问题作为列。