2017-05-26 41 views
0

我想要编写一个查询来返回一些概念及其各自价格的描述,但是我想创建两个不同的列来对两个不同的值类别的值进行分类。可能吗?Oracle SQL如何从两列中分隔列中的值?

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

+0

请出示的问题(没有链接)样本表数据(无图像链接)以及输出的例子。 – OldProgrammer

+0

我粘贴了一个截图,但我不知道为什么不显示在问题上。 –

回答

0
莫非

这项工作? (也许有一个更好的解决方案,感觉有点棘手...... litterally“开关”):

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

拉斐尔你是一个天才!你能解释我如何使用CASE语句在两个不同的列中检索信息?我不知道这种技术。 –

+0

它基本上是“创建”具有条件的新列显示,连接已经创建,您只需重新安排已满足条件的行。正如你所看到的,其中两行具有相同的输出,但其中一个是“当描述像'哈伯'”,另一个是“描述像'重新生成''或描述像'反'' 这是两个不同的列 –

+0

谢谢拉斐尔。我非常感谢你的帮助! –

相关问题