如何将一行中的列值与postgresql

时间:2017-09-20 18:18:21

标签: sql postgresql if-statement case-statement

我正在使用Postgresql 8.0。我有一张表如下:

表1:

ID  | Val | Num | Val2

ABC | High | 22 | Low
ABC | Low  | 2  | High
ABC | High | 16 | Low
DFG | High | 10 | High
DFG | High | 50 | High
DFG | Low  | 3  | High
EGF | Low  | 2  | High
2BD | Low  | 34  | High
2BD | High  | 2  | High

如何获得第一列中相同ID的输出,它检查Val列,优先于'High'值而不是'Low''Mod',然后从Val列中ID的{​​{1}}行中选择'High'列中值较高的行。对于上面的示例,输出应如下所示:

'Num'

有人可以指导我如何实现这一目标吗?

我正在尝试这种方式:

ID | Val | Num | Val2

ABC | High | 22 | Low
DFG | High | 50 | High
EGF | Low  | 2  | High
2BD | High  | 2  | High

但这也会消除输出中的select a.ID, a.Val, a.Num, a.Val2 from (select * from table1 where Val = ‘High’) a JOIN (select * from table1 where Val = ‘High’) b ON a.ID = b.ID where a.Num > b.Num 行!!

1 个答案:

答案 0 :(得分:0)

 select id, max(num) val, val2
 from table1
 group by id, val2