查询跨行的条件

Nar*_*iya 5 sql postgresql postgresql-9.4

我有一张这样的桌子

id |   item |  price | vip
---+--------+--------+-----
0  |  tv    | 2000   | NULL
1  |  tv    | 2500   | TRUE
2  |  camera| 3000   | NULL
3  |  camera| 3500   | TRUE
4  |  phone | 1000   | NULL
5  |  pen   | 2      | NULL
Run Code Online (Sandbox Code Playgroud)

在此表中,我有一些重复的条目,因为我需要存储VIP价格.如果正常人访问,我需要显示

item  | price
------+---------
tv    | 2000
camera| 3000
phone | 1000
pen   | 2
Run Code Online (Sandbox Code Playgroud)

如果贵宾来了,那么我应该显示价格

item  |  price
------+-----------
tv    | 2500
camera| 3500
phone | 1000
pen   | 2
Run Code Online (Sandbox Code Playgroud)

最后一列是布尔值.

我需要查询来获取物品.请帮助获取此查询.

jar*_*rlh 4

老客户:

select item, price
from tablename
where vip is NULL
Run Code Online (Sandbox Code Playgroud)

贵宾客户:

select item, price
from tablename t1
where vip is true
   or not exists (select 1 from tablename t2
                  where t1.item = t2.item
                    and vip is true)
Run Code Online (Sandbox Code Playgroud)