如何解决来自另一个表的行的计数,该表在sql中的两个表上都具有某些条件
有两个表Table1和Table2
A B C S
a 1 21 Summer
b 2 22 Summer
c 3 34 Summer
D E F S
a 1 21 Summer
d 5 22 Summer
f 2 34 Summer
我想根据表B的第B列小于表2的E列的条件来获取表first的所有列和表f的计数。
我尝试了此查询
select a.*,(select count(F) from Table2 JOIN Table1 on table1.S=table2.S where table1.B<table2.E ) AS Cnt
from Table1 a
但是它给我所有行相同的计数,这是不正确的 我需要根据条件满足进行计数。
解决方法
这将起作用
DECLARE @T1 TABLE (A Varchar(10),B INT,C INT,S Varchar(10))
DECLARE @T2 TABLE (D Varchar(10),E INT,F INT,S Varchar(10))
INSERT INTO @T1 VALUES
('a',1,21,'Summer'),('b',2,22,('c',3,34,'Summer')
INSERT INTO @T2 VALUES
('a',('d',5,('f','Summer')
SELECT
T1.A,T1.B,T1.C,T1.S,COUNT(T2.S) as Counts
FROM @T1 T1
left JOIN @T2 T2
ON T1.S = T2.S AND T1.B < T2.E
GROUP BY T1.A,T1.S
输出
A B C S Counts
a 1 21 Summer 2
b 2 22 Summer 1
c 3 34 Summer 1
,
我认为您只需要一个相关的子查询:
select a.*,(select count(t2.F)
from Table2 t2
where a.S = t2.S and t1.B < t2.E
) as Cnt
from Table1 a
,
select *,(select count(F)
from T2
where T1.S = T2.S AND T1.B < T2.E
) as Cnt from T1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。