T-SQL:匹配/映射表中值的组合

时间:2018-03-08 15:50:47

标签: sql sql-server tsql

我有两张桌子,表1: -

ID       Row ID  Value
2447234  1       456
2447234  2       1394

和table2

ID        Value
2447234   20
2447234   68
2447234   -106
2447234   160
2447234   208
2447234   1500

表1包含汇总总数列表,表2将这些汇总分解为较小的部分。这些都来自单独的系统,只有ID列作为键

加入

table2中某些值的组合将总计table1中的值。请参阅下面的示例,其中详细说明了table1中的哪个RowID映射到table2中的值: -

ID         Value    Mapping
2447234   20        1
2447234   68        1
2447234   -106      2
2447234   160       1
2447234   208       1
2447234   1500      2

因此,正如您所看到的,在table2中映射到1的所有值的总和等于表1中关联RowID的Value列。这个映射是我想要实现的。

在T-SQL中实现这一目标的最佳方法是什么?我已经考虑过某种光标或循环,但我觉得这会非常混乱。我提供的数据是一个非常简化的较大表的子集,包含多个ID和不同的值,它们将以相同的方式映射。

希望你们能帮忙。

1 个答案:

答案 0 :(得分:0)

呃,哦,这只是2个值 这将缺少重复值,但在table2中没有行标识符。

IndexOf()

这并不完美,但希望这是一个开始:

select t1.*, t2a.value, t2b.value 
from table1 t1 
join table2 t2a 
  on t2a.id = t1.id 
join table2 t2b 
  on t2b.id = t1.id  
 and t2b.value > t2a.value 
 and t2b.value + t2a.value = t1.value 
order by t1.id, tta.value, t2b.value