【发布时间】:2021-10-27 00:22:53
【问题描述】:
我试图找出一个透视查询,但首先按列分组。 我的表中有以下数据:
| ID | Label | Tag1 | Tag2 | Tag3 | Tag4 |
|---|---|---|---|---|---|
| 1 | A1 | 1 | 0 | 0 | 1 |
| 2 | B1 | 0 | 0 | 1 | 0 |
| 2 | C1 | 0 | 1 | 0 | 0 |
| 3 | A1 | 1 | 1 | 0 | 0 |
| 4 | B1 | 0 | 0 | 0 | 1 |
| 4 | C1 | 1 | 0 | 0 | 1 |
我正在寻找的最终结果是这样的:
| ID | 1 | 2 |
|---|---|---|
| 1 | A1 (1,0,0,1) | |
| 2 | B1 (0,0,1,0) | C1 (0,1,0,0) |
| 3 | A1 (1,1,0,0) | |
| 4 | B1 (0,0,0,1) | C1 (1,0,0,1) |
在这个例子中,我最多有 2 列,但也可以是 N 列。 我之前使用过枢轴,但是这个增加了其中的标签列的额外困难。
【问题讨论】:
-
我真的不建议这样做。您当前的设计和新的打破基本规范化原则(后者更是如此)。只需标准化您的数据。
-
Tag的列数也是可变的吗?否则,在创建一个连接标签和标签的新列并对其进行旋转之后,这是对现有技术的相当简单的应用。 -
@JeroenMostert 不,标签列总是 4
-
它仍然需要是动态的,@JeroenMostert,OP 说
ID的单个值可能有超过 2 行(我假设他们不知道 可能有多少行)。 -
用 Blue Peter 的话说,@JeroenMostert:“这是我之前制作的。” Group by column and multiple Rows into One Row multiple columns
标签: sql sql-server tsql