gpt4 book ai didi

sql - 每隔一列转置或取消旋转

转载 作者:行者123 更新时间:2023-12-04 19:34:24 25 4
gpt4 key购买 nike

基本上我想要做的是将每隔一列转置为旁边有以下列数据的行。

源可以只有两列,最多一千和几百万行。我只是在每行的基础上这样做。我尝试过执行“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 方面经验有限。如果需要更多信息,请告诉我。

最佳答案

如果您使用的是 SQL Server 2008,我认为您应该考虑使用 CROSS APPLY (VALUES) 技术:

http://www.sqlservercentral.com/articles/CROSS+APPLY+VALUES+UNPIVOT/91234/

基本上,它是这样的:

SELECT
x.NewColumn1,
x.NewColumn2
FROM YourTable t
CROSS APPLY (
VALUES
(t.OldColumn1, t.OldColumn2),
(t.OldColumn3, t.OldColumn4),
...
) x (NewColumn1, NewColumn2);

这是一个可运行的示例: http://sqlfiddle.com/#!3/9a9d2/5/0

关于sql - 每隔一列转置或取消旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13591818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com