Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不同条件下的自连接sql查询_Sql_Join - Fatal编程技术网

不同条件下的自连接sql查询

不同条件下的自连接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

我有一个简单的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     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