SQL条件拆分数据

时间:2018-08-13 03:23:32

标签: sql oracle

我们需要根据另一列的值将一列拆分为2。

一个更清晰的例子。

表格:

GroupId|value|DebitOrCredit
1      |10   |C
1      |15   |D
2      |24   |D
2      |65   |C

预期的选择结果:

GroupId|credit|debit
1      |10    |15
2      |65    |24

我们正在使用oracle。

3 个答案:

答案 0 :(得分:2)

我们可以通过基本的数据透视查询来实现:

SELECT
    GroupId,
    MAX(CASE WHEN DebitOrCredit = 'C' THEN value END) AS credit,
    MAX(CASE WHEN DebitOrCredit = 'D' THEN value END) AS debit
FROM yourTable
GROUP BY GroupId;

答案 1 :(得分:0)

SELECT GroupId, CASE WHEN DebitOrCredit = 'C' THEN value END AS Credit, 
CASE WHEN DebitOrCredit = 'D' THEN value END AS Debit
FROM table_name

答案 2 :(得分:0)

尝试以下查询-:

select GroupId,[C] as Credit,[D] as Debit
from YOUR_TABLE_NAME
PIVOT
(
sum(value) for DebitOrCredit in ([C],[D])
)t

SQL Server