Sql server SQL Server:使用循环连接两个表
我有两张桌子。我是T-SQL的新手 First select返回此结果:Sql server SQL Server:使用循环连接两个表,sql-server,join,Sql Server,Join,我有两张桌子。我是T-SQL的新手 First select返回此结果: ID Quantity ------------- 1 30 2 25 ID Document QuantityS Date ---------------------------------------- 1 DocA 12 22-03-2017 1 DocB 10 18-03-2017 1 D
ID Quantity
-------------
1 30
2 25
ID Document QuantityS Date
----------------------------------------
1 DocA 12 22-03-2017
1 DocB 10 18-03-2017
1 DocC 10 15-03-2017
1 DocD 8 6-03-2017
2 DocA 20 21-04-2017
2 DocB 12 18-04-2017
2 DocC 10 13-04-2017
第二次选择返回此结果:
ID Quantity
-------------
1 30
2 25
ID Document QuantityS Date
----------------------------------------
1 DocA 12 22-03-2017
1 DocB 10 18-03-2017
1 DocC 10 15-03-2017
1 DocD 8 6-03-2017
2 DocA 20 21-04-2017
2 DocB 12 18-04-2017
2 DocC 10 13-04-2017
我需要在ID上连接这两个表,并从第二个表中获取行,而quantityS
的总和大于或等于第一个表中的Quantity
,按Date desc
排序
我需要这样的桌子:
ID Document QuantityS Date
------------------------------------------
1 DocA 12 22-03-2017
1 DocB 10 18-03-2017
1 DocC 10 15-03-2017
2 DocA 20 21-04-2017
2 DocB 12 18-04-2017
我不需要第二个表的最后一行,因为三行的数量之和是32,大于30
有什么想法吗?你需要一个:
结果:
| id | document | quantity | uploadedOn | runningTotal |
|----|----------|----------|------------|--------------|
| 1 | DocA | 12 | 2017-03-22 | 82 |
| 1 | DocB | 10 | 2017-03-18 | 82 |
| 1 | DocC | 10 | 2017-03-15 | 82 |
| 1 | DocD | 8 | 2017-03-06 | 82 |
| 2 | DocA | 20 | 2017-04-21 | 82 |
| 2 | DocB | 12 | 2017-04-18 | 82 |
| 2 | DocC | 10 | 2017-04-13 | 82 |
| id | document | quantity | uploadedOn | runningTotal |
|----|----------|----------|------------|--------------|
| 1 | DocA | 12 | 2017-03-22 | 54 |
| 1 | DocB | 10 | 2017-03-18 | 64 |
| 1 | DocC | 10 | 2017-03-15 | 74 |
| 1 | DocD | 8 | 2017-03-06 | 82 |
| 2 | DocA | 20 | 2017-04-21 | 20 |
| 2 | DocB | 12 | 2017-04-18 | 32 |
| 2 | DocC | 10 | 2017-04-13 | 42 |
| id | document | quantity | uploadedOn | runningTotal |
|----|----------|----------|------------|--------------|
| 1 | DocA | 12 | 2017-03-22 | 12 |
| 1 | DocB | 10 | 2017-03-18 | 22 |
| 1 | DocC | 10 | 2017-03-15 | 32 |
| 1 | DocD | 8 | 2017-03-06 | 40 |
| 2 | DocA | 20 | 2017-04-21 | 20 |
| 2 | DocB | 12 | 2017-04-18 | 32 |
| 2 | DocC | 10 | 2017-04-13 | 42 |
结果:
| id | document | quantity | uploadedOn | runningTotal |
|----|----------|----------|------------|--------------|
| 1 | DocA | 12 | 2017-03-22 | 82 |
| 1 | DocB | 10 | 2017-03-18 | 82 |
| 1 | DocC | 10 | 2017-03-15 | 82 |
| 1 | DocD | 8 | 2017-03-06 | 82 |
| 2 | DocA | 20 | 2017-04-21 | 82 |
| 2 | DocB | 12 | 2017-04-18 | 82 |
| 2 | DocC | 10 | 2017-04-13 | 82 |
| id | document | quantity | uploadedOn | runningTotal |
|----|----------|----------|------------|--------------|
| 1 | DocA | 12 | 2017-03-22 | 54 |
| 1 | DocB | 10 | 2017-03-18 | 64 |
| 1 | DocC | 10 | 2017-03-15 | 74 |
| 1 | DocD | 8 | 2017-03-06 | 82 |
| 2 | DocA | 20 | 2017-04-21 | 20 |
| 2 | DocB | 12 | 2017-04-18 | 32 |
| 2 | DocC | 10 | 2017-04-13 | 42 |
| id | document | quantity | uploadedOn | runningTotal |
|----|----------|----------|------------|--------------|
| 1 | DocA | 12 | 2017-03-22 | 12 |
| 1 | DocB | 10 | 2017-03-18 | 22 |
| 1 | DocC | 10 | 2017-03-15 | 32 |
| 1 | DocD | 8 | 2017-03-06 | 40 |
| 2 | DocA | 20 | 2017-04-21 | 20 |
| 2 | DocB | 12 | 2017-04-18 | 32 |
| 2 | DocC | 10 | 2017-04-13 | 42 |
结果:
| id | document | quantity | uploadedOn | runningTotal |
|----|----------|----------|------------|--------------|
| 1 | DocA | 12 | 2017-03-22 | 82 |
| 1 | DocB | 10 | 2017-03-18 | 82 |
| 1 | DocC | 10 | 2017-03-15 | 82 |
| 1 | DocD | 8 | 2017-03-06 | 82 |
| 2 | DocA | 20 | 2017-04-21 | 82 |
| 2 | DocB | 12 | 2017-04-18 | 82 |
| 2 | DocC | 10 | 2017-04-13 | 82 |
| id | document | quantity | uploadedOn | runningTotal |
|----|----------|----------|------------|--------------|
| 1 | DocA | 12 | 2017-03-22 | 54 |
| 1 | DocB | 10 | 2017-03-18 | 64 |
| 1 | DocC | 10 | 2017-03-15 | 74 |
| 1 | DocD | 8 | 2017-03-06 | 82 |
| 2 | DocA | 20 | 2017-04-21 | 20 |
| 2 | DocB | 12 | 2017-04-18 | 32 |
| 2 | DocC | 10 | 2017-04-13 | 42 |
| id | document | quantity | uploadedOn | runningTotal |
|----|----------|----------|------------|--------------|
| 1 | DocA | 12 | 2017-03-22 | 12 |
| 1 | DocB | 10 | 2017-03-18 | 22 |
| 1 | DocC | 10 | 2017-03-15 | 32 |
| 1 | DocD | 8 | 2017-03-06 | 40 |
| 2 | DocA | 20 | 2017-04-21 | 20 |
| 2 | DocB | 12 | 2017-04-18 | 32 |
| 2 | DocC | 10 | 2017-04-13 | 42 |
这将产生:
| id | document | quantity | uploadedOn | runningTotal |
|----|----------|----------|------------|--------------|
| 1 | DocA | 12 | 2017-03-22 | 0 |
| 1 | DocB | 10 | 2017-03-18 | 12 |
| 1 | DocC | 10 | 2017-03-15 | 22 |
| 1 | DocD | 8 | 2017-03-06 | 32 |
| 2 | DocA | 20 | 2017-04-21 | 0 |
| 2 | DocB | 12 | 2017-04-18 | 20 |
| 2 | DocC | 10 | 2017-04-13 | 32 |
|id |文件|数量|上传|运行总计|
|----|----------|----------|------------|--------------|
|1 | DocA | 12 | 2017-03-22 | 0|
|1 | DocB | 10 | 2017-03-18 | 12|
|1 | DocC | 10 | 2017-03-15 | 22|
|1 | DocD | 8 | 2017-03-06 | 32|
|2 | DocA | 20 | 2017-04-21 | 0|
|2 | DocB | 12 | 2017-04-18 | 20|
|2 | DocC | 10 | 2017-04-13 | 32|
。。。在这一点上,它的形式是我们需要的,准备好连接到另一个具有限制的表
另外,还有另一种方法可以从正在运行的总计中删除当前行,而且也不需要
合并。选择查询的当前形式是因为它意味着windows完全指定了所需的行。另一个版本将留给读者或好奇的表演爱好者作为练习。到目前为止,您尝试了什么?结果如何?你没有加入两个表。如果您通过ID连接两个表,那么您将选择一行,因为您将看到公共ID为1。我对此不感兴趣,我只是在ID上连接这两个表,但我现在不知道如何执行此操作,使用哪个循环以及如何使用???非常感谢此解释,但我修改了我的问题,因为我有更多ID要连接。你能帮我把代码改成这个例子吗?