Oracle SQL如何在两个不同的列中分隔列中的值?

时间:2017-05-26 18:25:54

标签: sql oracle join inline-view

我想编写一个查询来返回一些概念及其各自价格的描述,但我想制作两个不同的列来对两个不同的项目值类别进行分类。有可能吗?

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

1 个答案:

答案 0 :(得分:0)

这可行吗? (也许有更好的解决方案,感觉有点棘手......随意“切换”):

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'));