2017-05-26 42 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

謝謝拉斐爾。我非常感謝你的幫助! –

相關問題