我需要帮助编写SQL查询。我有一个报告,其中包含不同列的值,但我需要一个额外的列,从前一列获取最大值,并为每个主键重复它。
我需要这样:
COL1-(PK) | COL2-(some int value) | COL3-max(COL2)
1 0 3
1 3 3
1 2 3
2 10 15
2 7 15
2 15 15
答案 0 :(得分:2)
select col1, col2, (select max(col2) from tablename t2
where t1.col1 = t2.col1)
from tablename t1
相关子选择用于获取每个col1的最大col2值。
答案 1 :(得分:1)
使用窗口功能:
select col1, col2, max(col2) over (partition by col1) as col3
from table t;
这就是这些功能的设计目标。
顺便说一句,您的代码似乎暗示col1
是主键。主键不重复,因此这不是主键。
答案 2 :(得分:0)
GROUP BY
SELECT COL1, MAX(COL2) AS MAX
FROM table
GROUP BY COL1