【发布时间】:2020-07-28 12:04:35
【问题描述】:
我希望按表中的某些列进行转置。我有类似以下示例的内容:
╔════════╦═══════╦══════╦══════╦═════════╦══════╦═══════╦═══════╦═══════╦═══════╦═══════╦═══════╦═══════╗
║ name ║ week ║ colX ║ ColY ║ Col.... ║ ColZ ║ Day 1 ║ Day 2 ║ Day 3 ║ Day 4 ║ Day 5 ║ Day 6 ║ Day 7 ║
╠════════╬═══════╬══════╬══════╬═════════╬══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╣
║ name x ║ week1 ║ xxx ║ yyy ║ .... ║ zzz ║ 0 ║ 5 ║ 0 ║ 0 ║ 0 ║ 0 ║ 0 ║
╠════════╬═══════╬══════╬══════╬═════════╬══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╣
║ name Y ║ week1 ║ xxx ║ yyy ║ .... ║ zzz ║ 4 ║ 0 ║ 0 ║ 0 ║ 0 ║ 0 ║ 0 ║
╠════════╬═══════╬══════╬══════╬═════════╬══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╣
║ name Z ║ week1 ║ xxx ║ yyy ║ .... ║ zzz ║ 0 ║ 0 ║ 5 ║ 0 ║ 5 ║ 0 ║ 0 ║
╠════════╬═══════╬══════╬══════╬═════════╬══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╣
║ name x ║ week2 ║ xxx ║ yyy ║ .... ║ zzz ║ 0 ║ 0 ║ 0 ║ 5 ║ 5 ║ 0 ║ 0 ║
╠════════╬═══════╬══════╬══════╬═════════╬══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╣
║ name Y ║ week2 ║ xxx ║ yyy ║ .... ║ zzz ║ 5 ║ 0 ║ 0 ║ 0 ║ 4 ║ 0 ║ 0 ║
╠════════╬═══════╬══════╬══════╬═════════╬══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╣
║ name Z ║ week2 ║ xxx ║ yyy ║ .... ║ zzz ║ 0 ║ 4 ║ 5 ║ 4 ║ 0 ║ 0 ║ 2 ║
╚════════╩═══════╩══════╩══════╩═════════╩══════╩═══════╩═══════╩═══════╩═══════╩═══════╩═══════╩═══════╝
我想将信息转置为每行显示 1 天,其余信息按原样显示,我知道这将创建更多行,但有助于保持信息更清晰。
每行右侧显示 1 周,然后是该周的 7 天,以及分配给每个项目每天的小时数(比如说 colX 值)。 我试图仅按天进行转置,但我不知道如何仅将枢轴用于几个值。
【问题讨论】:
标签: sql sql-server pivot