在SQL Server中,我有两个表中的两个查询。
第一个表'Values1'有两列:'index1'和'value1'。第二个表'Values2'有列'index2'和'value2'。
我想要一个查询,对于一对索引值'd1'和'd2'可以输出所有'index1'和'value1'行以及'd1'和'd2'之间的对应index1,以及'Values2'表中的行数'd1'和'value1'之间的'index2'值作为第一个查询的结果给出,我希望第二个查询循环第一个查询的结果。因此,如果第一个表是:
index1:value1
10:'A'
20:'B'
30:'C'
40:'D'
50:'E'
第二张表是:
index2:value2
0:'F'
5:'G'
15:'H'
25:'I'
35:'J'
对d1 = 18和d2 = 32的查询将导致:
20,B,3
30,C,4
如何组合这两个查询以产生这种结果?
答案 0 :(得分:0)
你似乎想要:
select t1.index1, t1.value1, count(*)
from t1 join
t2
on t2.value2 between @d1 and t1.value1
where t1.value1 between @d1 and @d2
group by t1.index1, t1.value1;
答案 1 :(得分:0)
Select *
From (
Select index1 as [index],value1 as value
From ( Values (10,'A'),(20,'B'),(30,'C'),(40,'D'),(50,'E'))as Temp(index1,value1)
Union
Select index2 as [index],value2 as value
From ( Values (0,'F'),(5,'G'),(15,'H'),(25,'I'),(35,'J')) as Temp(index2,value2)
) D1
Where D1.[index] between 18 and 32
order by [index]
答案 2 :(得分:0)
你的问题有点不清楚。获取{!! session('message') !!}
记录很简单:
values1
关于第二部分:您想要计算表select * from values1 where index1 between @d1 and @d2;
中的记录并且与您的解释相矛盾,似乎您只想计算values2
的记录。
index2 <= index1
两者相结合:
select count(*) from values2 where index2 <= @index1