【发布时间】:2014-01-31 00:25:14
【问题描述】:
我正在使用 Oracle,我想将一个查询转换为多行。
这是我的查询:
SELECT I.cd_curso,
I.cd_discip,
ND.ds_discip,
I.cd_turma_t,
I.cd_turma_p,
I.cd_turma_l,
I.cd_turma_tp,
I.cd_turma_e,
I.cd_turma_o,
I.cd_turma_c,
I.cd_turma_s,
Count(*) AS alunos
FROM cse.v_vwinscri I,
cse.t_tbdiscip ND
WHERE I.cd_lectivo = 201314
AND I.cd_discip = 911901
AND I.cd_discip = ND.cd_discip
AND I.cd_curso = 9885
AND ( I.cd_turma_t IS NOT NULL
OR I.cd_turma_p IS NOT NULL
OR I.cd_turma_l IS NOT NULL
OR I.cd_turma_tp IS NOT NULL
OR I.cd_turma_e IS NOT NULL
OR I.cd_turma_o IS NOT NULL
OR I.cd_turma_c IS NOT NULL
OR I.cd_turma_s IS NOT NULL )
GROUP BY I.cd_curso,
I.cd_discip,
ND.ds_discip,
I.cd_turma_t,
I.cd_turma_p,
I.cd_turma_l,
I.cd_turma_tp,
I.cd_turma_e,
I.cd_turma_o,
I.cd_turma_c,
I.cd_turma_s
ORDER BY I.cd_curso,
I.cd_turma_t,
I.cd_turma_p,
I.cd_turma_l,
I.cd_turma_tp,
I.cd_turma_e,
I.cd_turma_o,
I.cd_turma_c,
I.cd_turma_s
我希望将结果 CD_TURMA_T、CD_TURMA_P 等转换为不同的行,如 CD_TURMA。好吧,基本上使用第一个字段作为键,其他字段作为值,将它们从列更改为行...
有可能吗?
【问题讨论】:
-
是的,这是可能的。只需查找有关 Oracle Pivot 的教程或stackoverflow.com/questions/17060044/…
-
写
COALESCE(I.cd_turma_t, I.cd_turma_p, I.cd_turma_l, I.cd_turma_tp, ...) IS NOT NULL比较短