在SQL中将数据从宽格式转换为长格式 [英] Convert data from wide format to long format in SQL

查看:533
本文介绍了在SQL中将数据从宽格式转换为长格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些格式的数据:

  VAR1 VAR2得分1得分2得分3 
AB 1 2 3

我需要将它转换为格式

 VAR1 VAR2 VarName价值
AB得分1 1
AB得分2 2
AB得分3 3

如何在SQL中执行此操作?

解决方案

提供您的分数列是固定的,你不需要聚合,你可以使用多个 SELECT UNION ALL 语句来生成数据的形状请求。例如

  SELECT [VAR1],[VAR2],[VarName] ='Score1',[Value] = [Score1] 
FROM [dbo]。[UnknownMe]
UNION ALL
SELECT [VAR1],[VAR2],[VarName] ='Score2',[Value] = [Score2]
FROM [dbo]。[UnknownMe]
UNION ALL
SELECT [VAR1],[VAR2],[VarName] ='Score3',[Value] = [Score3]
FROM [dbo]。 [UnknownMe]

SQL小提琴: http://sqlfiddle.com/#!6/f54b2/4/0


I have some data in the format:

VAR1 VAR2 Score1 Score2 Score3
A     B    1      2      3

I need to convert it into the format

VAR1 VAR2 VarName Value
 A     B  Score1   1
 A     B  Score2   2
 A     B  Score3   3

How can I do this in SQL?

解决方案

Provided your score columns are fixed and you require no aggregation, you can use multiple SELECT and UNION ALL statements to generate the shape of data you requested. E.g.

SELECT [VAR1], [VAR2], [VarName] = 'Score1', [Value] = [Score1]
FROM [dbo].[UnknownMe]
UNION ALL
SELECT [VAR1], [VAR2], [VarName] = 'Score2', [Value] = [Score2]
FROM [dbo].[UnknownMe]
UNION ALL
SELECT [VAR1], [VAR2], [VarName] = 'Score3', [Value] = [Score3]
FROM [dbo].[UnknownMe]

SQL Fiddle: http://sqlfiddle.com/#!6/f54b2/4/0

这篇关于在SQL中将数据从宽格式转换为长格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆