合并两个相关SQL查询的输出

时间:2017-01-13 00:00:30

标签: sql sql-server

在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

如何组合这两个查询以产生这种结果?

3 个答案:

答案 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