SQL-如何通过涉及多个列的计算获得每行的最大值

SQL-如何通过涉及多个列的计算获得每行的最大值,sql,max,correlated-subquery,Sql,Max,Correlated Subquery,表1的每一行都应找到计算中包括表1和表2中多列的最大值。 表1由以下列组成:ID、代码、值1、值2、最大值 表2由以下列组成:ID、代码、Perc1、Perc2 **Table1** ID=1 (value1=1000, Value2=5000, Code=21); Max_Value=? ID=2 (value1=2000, Value2=4000, Code=21); Max_Value=? ID=3 (value1=1000, Value2=5000, Code=21);

表1的每一行都应找到计算中包括表1和表2中多列的最大值。 表1由以下列组成:ID、代码、值1、值2、最大值 表2由以下列组成:ID、代码、Perc1、Perc2

**Table1**

ID=1 (value1=1000, Value2=5000, Code=21);   Max_Value=? 
ID=2 (value1=2000, Value2=4000, Code=21);   Max_Value=?
ID=3 (value1=1000, Value2=5000, Code=21);   Max_Value=?

**Table2**

ID=25 (Perc1=5.2%, Perc2=3.5%, Code=21);    
ID=26 (Perc1=3.1%, Perc2=8.6%, Code=21);   
ID=27 (Perc1=2.5%, Perc2=3.4%, Code=21)


** Calculation**

formula:
    If I understand correctly, you want 
join
and
row_number()
:

select t12.*
from (select t1.*, t2.*,
             (t2.perc1 * t1.value1 + t2.perc2 * t1.value2) as calc,
             row_number() over (partition by t1.id order by (t2.perc1 * t1.value1 + t2.perc2 * t1.value2) desc) as seqnum
      from table1 t1 join
           table2 t2
           on t1.code = t2.code
     ) t12
where seqnum = 1;
**表1** ID=1值1=1000,值2=5000,代码=21;最大值=? ID=2 value1=2000,Value2=4000,Code=21;最大值=? ID=3,值1=1000,值2=5000,代码=21;最大值=? **表2** ID=25 Perc1=5.2%,Perc2=3.5%,代码=21; ID=26 Perc1=3.1%,Perc2=8.6%,代码=21; ID=27 Perc1=2.5%,Perc2=3.4%,代码=21 **算计** 公式:
如果我理解正确,您需要加入和行号:


您的公式和解释暗示了表1中的一个代码列,尽管我在示例数据中没有看到它。

请单击下面的链接,添加一些示例数据和基于该数据的预期输出。有关如何创建美观的文本表的一些提示,请参见。您的问题-不要在注释中发布代码或其他信息您到目前为止尝试了哪些方法?我对相关子查询进行了三次细分,但结果并不例外:选择T1.ID,从表2中选择MAXT2.Value1*T2.Perc1+T2.Value2*T2.Perc2作为T2,其中T2.Code=T1。从表1中选择MAXT2.Value1*T2.Perc1+T2.Value2*T2.Perc2作为Max_值作为T1将您的问题标记在您使用的数据库中。非常感谢。我将尝试插入此代码。否则,表格就要复杂得多。以下是对上述信息的更正:表1 ID=1 value1=1000,Value2=5000,Code=21;最大值=?ID=2 value1=2000,Value2=4000,Code=21;最大值=?ID=3,值1=1000,值2=5000,代码=21;最大值=?