我有两张桌子,表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和不同的值,它们将以相同的方式映射。
希望你们能帮忙。
答案 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