Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL条件拆分数据_Sql_Oracle - Fatal编程技术网

SQL条件拆分数据

SQL条件拆分数据,sql,oracle,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。我们可以通过基本的pivot查询来实现这一点: SELECT GroupId,

我们需要根据另一列的值将一列拆分为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。

我们可以通过基本的pivot查询来实现这一点:

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;

请尝试以下查询-:

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

SQL Server

感谢您提供此代码片段,它可能会提供一些有限的即时帮助。通过展示为什么这是一个很好的问题解决方案,A将极大地提高它的长期价值,并将使它对未来有其他类似问题的读者更有用。请在你的回答中添加一些解释,包括你所做的假设。你为此做了哪些尝试???@IShubh我实际上不知道我可以尝试做些什么。或者如果这是可行的。蒂姆的回答完美地完成了任务。
select GroupId,[C] as Credit,[D] as Debit
from YOUR_TABLE_NAME
PIVOT
(
sum(value) for DebitOrCredit in ([C],[D])
)t