【发布时间】:2012-11-15 12:31:20
【问题描述】:
基本上我要做的是将每隔一列转换为一行,旁边有以下列数据。
源只能有两列,最多可达一千和几百万行。我只是在每行的基础上这样做。我尝试过执行“UNION ALL”,但是在处理大表中的数百列时速度非常慢。
可能的解决方案是使用 UNPIVOT,尽管我能找到的每个示例都在做与我想要的不同的事情。
示例:查询前
Columns...
Apple | Apple Data | Banana | Banana Data | Cranberry | Cranberry Data | ....
Data Returned...
IOWA_PL_RLA | 1 | IOWA_PL_MATH | 1 | IOWA_SS_RLA 684 .....
示例:查询后
MeasureID Score
CRCT_PL_RLA | 1
CRCT_PL_MATH | 1
CRCT_SS_RLA |684
.....
希望我已经对自己进行了足够的解释,以便有人可以提供帮助,因为我在 T-SQL 方面只有中等经验。如果需要更多信息,请告诉我。
【问题讨论】:
-
measureid、apple、banana等和value是来自data字段吗?带有data的项目实际上是否命名为....Data? -
希望我理解正确;是的。该数据实际上是学生评估数据。这是一个按原样加载到表中的大型平面文件。我们有一个度量,然后以下列是它的分数。 (原始分数、量表分数、表现水平等。(阅读、数学、科学等))
-
在您的 ETL 中,您不能将表加载为单个描述/值表,而不是按原样作为交叉表吗?您能否添加第二行数据以显示您正在寻找的内容(理想情况下,两行数据之前/之后实际上是一致的)
-
我按照您所说的 u07ch 进行操作,但这有点棘手。我们有一个主要的教育数据库,在经过一些繁重的 ETL 之后,所有内容都被加载到其中,这确实更符合您的建议。我的最终目标是为教育部门的非技术员工制定一些简单的方法,以验证评估是否从平面文件阶段正确加载到最终产品。
-
@DeusAphor 有没有办法识别
apple中的数据与AppleData中的数据相关?在您的示例中,我们可以根据列名相似来识别,您的所有列都是这样吗?