不同条件下的自连接sql查询
我有一个简单的kpi表,下面有id、名称、每个值不同条件下的自连接sql查询,sql,join,Sql,Join,我有一个简单的kpi表,下面有id、名称、每个值 id name value ------------------- 1 kpi1 100 1 kpi1 100 1 kpi1 100 1 kpi1 100 1 kpi2 100 1 kpi2 0 1 kpi2 100 1 kpi2 100 2 kpi1 100 2 k
id name value
-------------------
1 kpi1 100
1 kpi1 100
1 kpi1 100
1 kpi1 100
1 kpi2 100
1 kpi2 0
1 kpi2 100
1 kpi2 100
2 kpi1 100
2 kpi1 0
2 kpi1 0
2 kpi1 0
2 kpi2 100
2 kpi2 100
2 kpi2 100
2 kpi2 100
我希望查询首先为每个id和每个名称返回一个不同的1行,如果存在,则值为0,否则值为100
id name value
-------------------
1 kpi1 100
1 kpi2 0
2 kpi1 0
2 kpi2 100
我尝试使用联接,但并不知道这是否正确,因为我不知道如何添加条件来选择一个kpi,该kpi的值首先为0,如果确实存在,则为100
select * from (select * from kpi where value='0') a inner join (select * from kpi where value='100') b on a.id=b.id
希望我足够清楚,我花了一天的时间来计算连接,但没有成功。谢谢您可以使用窗口功能。这是你的电话号码 输出:
| id | name | value |
| --- | ---- | ----- |
| 1 | kpi1 | 100 |
| 1 | kpi2 | 0 |
| 2 | kpi1 | 0 |
| 2 | kpi2 | 100 |
| id | name | value |
| --- | ---- | ----- |
| 1 | kpi1 | 100 |
| 1 | kpi2 | 0 |
| 2 | kpi1 | 0 |
| 2 | kpi2 | 100 |
SELECT id, name, min(value) as value
from kpi
group by id, name