我有一个表字段。例如: -
id remote unique_id
1 23 30007
1 24 30008
1 1 30009
2 4 30007
2 5 30008
2 1 30009
3 6 30007
3 7 30008
3 2 30009
这里我想得到unique_id field = 30008远程值的总和,其中unique_id字段= 30009远程值= 1;
基本上,我想要的是: (查询1)select SUM(remote) from Fields where unquie_id = '30008';
并添加了一个过滤器:(查询2)
select remote from Fields where unquie_id = '30009';
我想选择查询2的_id记录,其中remote = 1表示我的查询1。
所以上面的输出是:24+5=29.
这里我选择_id为1,2。 _id = 3将被拒绝,因为它对于unique_id = 30009是远程的。
这对你们来说可能很简单,但我是sqlite新手。因此,请帮助。
答案 0 :(得分:0)
我实际上没有运行它,但是这样的事情应该做你需要的:
select SUM(remote) from Fields as F where F.unique_id = '30008' and F.id in (select remote from Fields as G where G.unique_id = '30009');
所以我测试了它:
create table Fields(id integer, remote integer, unique_id integer);
insert into Fields(id, remote, unique_id) values (1, 23, 3007), (1, 24, 30008), (1 ,1 ,30009), (2, 4, 30007), (2 , 5 , 30008), (2 , 1 , 30009), (3 , 6, 30007), (3 , 7, 30008
), (3 , 2 , 30009);
/*select * from Fields;*/
select SUM(remote) from Fields as F where F.unique_id = '30008' and F.id in (select remote from Fields as G where G.unique_id = '30009');
根据需要,输出为: 29 。
答案 1 :(得分:0)
如果我正确理解了您的问题,那么您希望对remote
unique_id
所在的30008
列进行求和,但仅适用于那些id
remote=1
组unique_id=30009
}和SELECT SUM(f1.remote)
FROM Fields f1
INNER JOIN
(
SELECT id
FROM Fields
GROUP BY id
HAVING SUM(CASE WHEN unique_id = '30009' AND remote = 1 THEN 1 ELSE 0 END) > 0
) f2
ON f1.id = f2.id
WHERE unique_id = '30008';
。
{{1}}
答案 2 :(得分:0)
您可以使用exists
select sum(remote) total
from Fields f
where exists (
select 1 from Fields
where remote = f.id and unique_id = 30009
) and f.unique_id = 30008