好吧,我有一张桌子
id | idtable2|value | code |name |
1 | 3 |983 | 10 |Total |
2 | 4 |89 | 10 |type 4 |
3 | 5 |299 | 10 |type 5 |
4 | 6 |0 | 10 |type 6 |
5 | 7 |72 | 10 |type 7 |
6 | 8 |523 | 10 |type 8 |
7 | 4 | | 11 |percentaje4|
8 | 5 | | 11 |percentaje5|
9 | 6 | | 11 |percentaje6|
10 | 7 | | 11 |percentaje7|
11 | 8 | | 11 |percentaje8|
我有我的价值观,我需要有他们的百分比。 这些百分比基于您可以看到的值。 举例来说,我的行为id 7,我可以做到这一点
declare @total int
set @total=(select value from table where name='total')
update table set value=(select value from table where code=1' and name='type 4')/@total
我需要为所有百分比的行做这件事,但这是一张dinamic表。
在另一个表中,我有一个id和一个名字(table1.name it's equals to table2.name
)
每个代码(10,11)的table1将有一个名称(来自table2)
如何获得此值?我尝试了查询。
update ce set valor=valor/@total from #table1 ce inner join table2 m
on ce.t2id=m.id
where codigo=10
但是我用代码10更新了值,而不是代码11的值。 我怎么能这样做?
答案 0 :(得分:0)
删除where子句并完成:
update ce set valor=valor/@total from #table1 ce inner join table2 m
on ce.t2id=m.id
您无需指定任何内容:)
答案 1 :(得分:0)
通过使用IN:
,您可以在where子句中拥有多个值update ce set valor=valor/@total from #table1 ce inner join table2 m
on ce.t2id=m.id
where codigo in (10, 11)
答案 2 :(得分:0)
如果你在idTable2上加入#table1并用codigo = 10过滤掉一个,用codigo = 11过滤另一个,你可以使用codigo = 10的valor来计算codigo的百分比= 11。
update ce11
set valor=ce10.valor/@total
from #table1 ce11
inner join #table1 ce10
on ce11.idTable2 = ce10.idTable2
and ce11.codigo = 11
and ce10.codigo = 10