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
如何在oracle/sql中处理每行并将多行合并为一行_Sql_Oracle_Oracle11g - Fatal编程技术网

如何在oracle/sql中处理每行并将多行合并为一行

如何在oracle/sql中处理每行并将多行合并为一行,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我是oracle 11g的新手。我做了一些研究,但没有一个能完全满足我的要求 这是我的桌子 T1 T2。这是一张比例尺 Subject Weight Math 2 CS 2.1 History 1.9 Science 2 我希望我的输出是: T3 Date_ Name Math History CS Science 2011 AAA 160 178.5 2013

我是oracle 11g的新手。我做了一些研究,但没有一个能完全满足我的要求

这是我的桌子

T1

T2。这是一张比例尺

Subject    Weight
Math         2
CS           2.1
History      1.9
Science      2
我希望我的输出是:

T3

Date_    Name   Math   History  CS     Science
2011     AAA            160     178.5
2013     AAA    180             193.2   182

非常感谢

您正在尝试使用乘法因子进行轴心旋转。下面是一个使用显式聚合处理此问题的方法:

select Date_, Name,
       sum(case when Subject = 'Math' then T1.Mark * T2.Weight end) as Math,
       sum(case when Subject = 'History' then T1.Mark * T2.Weight end) as History,
       sum(case when Subject = 'CS' then T1.Mark * T2.Weight end) as CS,
       sum(case when Subject = 'Science' then T1.Mark * T2.Weight end) as Science
from T1 join
     T2
     on T1.Subjecct = T2.Subject
group by Date_, Name;
select Date_, Name,
       sum(case when Subject = 'Math' then T1.Mark * T2.Weight end) as Math,
       sum(case when Subject = 'History' then T1.Mark * T2.Weight end) as History,
       sum(case when Subject = 'CS' then T1.Mark * T2.Weight end) as CS,
       sum(case when Subject = 'Science' then T1.Mark * T2.Weight end) as Science
from T1 join
     T2
     on T1.Subjecct = T2.Subject
group by Date_, Name;