行变换的数据我有我想通过Service
列“扁平化”的结果集。 例子最能解释它:如何从基于特定的列到另一个数据结构
鉴于此结果集(让我们把它叫做request
):
---------------------------------------
| Id | Service | C1 | ... | Cn |
--------------------------------------|
| 1 | A | 5 | | 3 |
--------------------------------------|
| 1 | B | 2 | | 1 |
--------------------------------------|
| 2 | A | 9 | | 4 |
--------------------------------------
我想这一个:
---------------------------------------------------------------------------
| Id | ServiceA_C1 | ... | ServiceA_Cn |ServiceB_C1 | ... | ServiceB_C2n |
---------------------------------------------------------------------------
| 1 | 5 | ... | 3 | 2 | ... | 1 |
---------------------------------------------------------------------------
| 2 | 9 | ... | 4 | NULL | ... | NULL |
---------------------------------------------------------------------------
最终想要的结果:
- 每个ID(其具有米ultiple值现在有一个排)
- 服务的每个不同的值将有最终结果
n
列设置
当前解决方案(工作,但超级长,效率不高):
SELECT A.C1 AS ServiceA_C1, ..,A.Cn AS ServiceA_Cn,B.C1 AS ServiceB_C1, ..,B.Cn AS ServiceB_Cn
FROM (SELECT *
FROM request
WHERE Service = 'A') AS A
JOIN
(SELECT *
FROM request
WHERE Service = 'B') AS B
ON A.Id = B.Id
注:
服务的数量大约是10(Service
列#distinct值), 这是一个通用的pH问题本身的问题。
我知道像旋转,UNPIVOT,跨应用,联接等SQL操作,仍然这个问题让我很烦,因为我没有发现什么猫腻立即解决这个问题。我很高兴知道这种方法之一解决了这个问题,我错过了它。
谢谢