如何在oracle/sql中处理每行并将多行合并为一行
我是oracle 11g的新手。我做了一些研究,但没有一个能完全满足我的要求 这是我的桌子 T1 T2。这是一张比例尺如何在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
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;