Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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
Oracle SQL使用合并创建交叉表_Sql_Oracle_Merge_Crosstab - Fatal编程技术网

Oracle SQL使用合并创建交叉表

Oracle SQL使用合并创建交叉表,sql,oracle,merge,crosstab,Sql,Oracle,Merge,Crosstab,我需要帮助创建交叉表。 我被告知可以使用Merge语句来完成,但我对此感到非常困惑。 也许有人在使用merge语句创建交叉表时遇到了问题 以下是初始表格: 初始表中可以有许多人,结果表中可以有许多列 person text person_1 some_text_1 person_1 some_text_2 person_1 some_text_3 person_1 some_text_4 person_1 some_text_5 person_2 some_

我需要帮助创建交叉表。 我被告知可以使用Merge语句来完成,但我对此感到非常困惑。 也许有人在使用merge语句创建交叉表时遇到了问题

以下是初始表格: 初始表中可以有许多人,结果表中可以有许多列

person  text
person_1    some_text_1
person_1    some_text_2
person_1    some_text_3
person_1    some_text_4
person_1    some_text_5
person_2    some_text_6
person_2    some_text_7
person_2    some_text_8
person_2    some_text_9
因此,我需要一张表:

person_1    person_2
some_text_1 some_text_6
some_text_2 some_text_7
some_text_3 some_text_8
some_text_4 some_text_9
some_text_5 
UPD:我知道可以用pivot或smth其他工具完成。
问题是如何使用MERGE来实现它。

我不知道如何使用“MERGE”来实现它。实际上,我认为“MERGE”不起作用。。。 这是我的解决方案,可以满足您的需要,但不方便

SELECT A.TEXT AS PERSON_1,B.TEXT AS PERSON_2...
FROM 
(SELECT TEXT,ROWNUM AS R  FROM PERSON_TAB WHERE PERSON='person_1') A
FULL JOIN 
(SELECT TEXT,ROWNUM AS R FROM PERSON_TAB WHERE PERSON='person_2' ) B
ON A.R=B.R
FULL JOIN
...
如果你有太多的人,你可以创建一个程序来完成。
请告诉我,如果你知道如何使用合并或更好的方法来实现这一点:

我想你可以尝试使用和这样的组合

select person_1,person_2
from (
        select *
        from (
                select rank() over(partition by person order by text) as idx, person, text
                from <your_table>
            )
        pivot (
                max(text) for person in (
                        'person_1' as person_1,
                        'person_2' as person_2
                    )
            )
    )

为什么你试过的东西已经把你弄糊涂了?你能发布你的代码和你不理解的解释吗?我不认为MERGE语句是你想要使用的。最重要的是根据标准执行有条件的插入/更新。>为什么您尝试的内容已经让您感到困惑?我不知道应该使用什么键来链接人员和报告。使用“选择人员”合并到报告中,人员文本在什么条件下?如果不匹配,则插入-如何仅定义要插入的一列?重视文本;