我有一个如下所示的 MySQL 输入表。主键由PID和MID组成。
PID | MID | VAL
---------------
1 | 1 | 50
1 | 2 | 51
1 | 3 | 52
1 | 4 | 53
2 | 1 | 25
2 | 2 | 26
3 | 1 | 11
3 | 1 | 12
3 | 2 | 13
我需要下面的格式,您可以看到固定数量的 50 个 MID 在列中,所有可用的 PID 在行中。 PID 应该是主键:
PID | MID1 | MID2 | MID3 | MID4 | MID5 | .... | MID50
---------------------------------------------------------------
1 | 50 | 51 | 52 | 53 | ..(null)..
2 | 25 | 26 | ..(null)..
3 | 12 | 13 | ..(null)..
关于SSIS:根据MSDN Pivot Article PIVOT 转换“通过将表达式中的一列中的唯一值转换为输出中的多列来旋转表值表达式”,因此我认为这不适用于我的情况因为 MID 并不独特。
在 SQL/MySQL 方面我不是专家,所以我希望你能帮助我。我见过 MySQL Pivot 查询 here我认为这朝着正确的方向发展,但无法适应我的问题。
解决方案可能是 MySQL 查询或 SSIS 转换。
最佳答案
这些内容
SELECT
pid,
MAX(CASE mid WHEN 1 THEN val ELSE NULL END) as MID1,
MAX(CASE mid WHEN 2 THEN val ELSE NULL END) as MID2,
MAX(CASE mid WHEN 3 THEN val ELSE NULL END) as MID3,
MAX(CASE mid WHEN 4 THEN val ELSE NULL END) as MID4,
MAX(CASE mid WHEN 5 THEN val ELSE NULL END) as MID5,
MAX(CASE mid WHEN 6 THEN val ELSE NULL END) as MID6
FROM inputTable
GROUP BY pid;
关于mysql - 如何透视 MySQL 或 SSIS 中不唯一的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25701693/