Oracle SQL 如何在两个不同的列中将列中的值分开?
Oracle SQL How can I separate values from a column in two different columns?
我想将查询编码为 return 一些概念及其各自价格的描述,但我想创建两个不同的列来对两个不同的项目类别值进行分类。可能吗?
SELECT b.descripcion CONCEPTO, a.cantidad, a.importe,
c.descripcion
FROM detalles_liquidaciones a
JOIN conceptos b
ON (a.codigo_concepto = b.codigo)
JOIN tipos_conceptos c
ON (b.codigo_tipo = c.codigo)
WHERE a.numero_liquidacion = 13802
AND c.descripcion IN ('HABER', 'RETENCION', 'ANTICIPO');
Output Query
我想编写如下代码:
Ideal query
这行得通吗? (也许有更好的解决办法,感觉有点棘手...乱七八糟"switching"):
SELECT Concepto ,
(CASE
WHEN description LIKE 'HABER' THEN
importe
ELSE
NULL
END) haberes,
(CASE
WHEN description LIKE 'HABER' THEN
cantidad
ELSE
NULL
END) cantidad,
(CASE
WHEN description LIKE 'RETENCION' OR description LIKE 'ANTICIPO' THEN
importe
ELSE
NULL
END) retenciones
FROM (SELECT b.descripcion concepto, a.cantidad, a.importe, c.descripcion
FROM detalles_liquidaciones a
JOIN conceptos b
ON (a.codigo_concepto = b.codigo)
JOIN tipos_conceptos c
ON (b.codigo_tipo = c.codigo)
WHERE a.numero_liquidacion = 13802
AND c.descripcion IN ('HABER', 'RETENCION', 'ANTICIPO'));
我想将查询编码为 return 一些概念及其各自价格的描述,但我想创建两个不同的列来对两个不同的项目类别值进行分类。可能吗?
SELECT b.descripcion CONCEPTO, a.cantidad, a.importe,
c.descripcion
FROM detalles_liquidaciones a
JOIN conceptos b
ON (a.codigo_concepto = b.codigo)
JOIN tipos_conceptos c
ON (b.codigo_tipo = c.codigo)
WHERE a.numero_liquidacion = 13802
AND c.descripcion IN ('HABER', 'RETENCION', 'ANTICIPO');
Output Query
我想编写如下代码: Ideal query
这行得通吗? (也许有更好的解决办法,感觉有点棘手...乱七八糟"switching"):
SELECT Concepto ,
(CASE
WHEN description LIKE 'HABER' THEN
importe
ELSE
NULL
END) haberes,
(CASE
WHEN description LIKE 'HABER' THEN
cantidad
ELSE
NULL
END) cantidad,
(CASE
WHEN description LIKE 'RETENCION' OR description LIKE 'ANTICIPO' THEN
importe
ELSE
NULL
END) retenciones
FROM (SELECT b.descripcion concepto, a.cantidad, a.importe, c.descripcion
FROM detalles_liquidaciones a
JOIN conceptos b
ON (a.codigo_concepto = b.codigo)
JOIN tipos_conceptos c
ON (b.codigo_tipo = c.codigo)
WHERE a.numero_liquidacion = 13802
AND c.descripcion IN ('HABER', 'RETENCION', 'ANTICIPO'));