我正在使用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
行!!
答案 0 :(得分:0)
select id, max(num) val, val2
from table1
group by id, val2