Sql 如何显示多列数字数据的字符值
这是一个建筑问题。 通常,当您有统计程序格式(R、SPSS)的数据时,每个值都有一个标签(称为值标签)。 假设我们有三个问题由三个人回答Sql 如何显示多列数字数据的字符值,sql,tsql,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。但我不知道如何做到这一点。我的想法是做两张桌子 第一个表格包含每个问题的每人答案。这里每
Q1|Q2|Q3
Person1||2 |1 |1
Person2||3 |1 |2
Person3||3 |2 |3
每个值都有一个值标签
1 = good
2 = neutral
3 = bad
我的目标是将这些数据放入sql server。但我不知道如何做到这一点。我的想法是做两张桌子
第一个表格包含每个问题的每人答案。这里每个人都有一个ID,问题是字段。现在我再做一次,把值和valuelabel放进去。但是使用这种构造,我不知道如何查询一个表,其中所有值都被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
如果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]中的所有值列,或
- 使用数据透视表将每个人的结果转换为一行,以问题作为列
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