我遇到SQL Server问题。我有桌子A
id field1 field2 field3
1 a b 10
2 a c 20
3 b e 30
4 b a 50
5 c null 20
如果field1 = 10%* field3 如果field2 = 5%* field3
a= 10%*10+10%*20+5%*50=5.5
我想得到表
name values
a 5.5
b 8.5
c 3
e 1.5
请帮帮我。谢谢!
答案 0 :(得分:0)
我无法理解你想要什么,但希望你能在这里得到一些想法。
这是你的表格(请在发布新问题时在你的问题中发布你的表格结构和惰性查询,这样你就可以快速得到所有人的答案)
create table #temp (id int identity(1,1),field1 varchar(50),field2 varchar(50),field3 int)
INSERT INTO #temp (field1 ,field2 ,field3)
values
('a', 'b' , 10),
('a', 'c' , 20),
('b', 'e' , 30),
('b', 'a' , 50),
('c', null , 20)
以下是为所有field3值选择不同百分比的查询
select field1,
field2 ,
field3,
(.1 * field3) as TenPer_field3,
(.05 * field3) as FivePer_field3
from #temp
输出:
field1 field2 field3 TenPer_field3 Fiveper_field3
a b 10 1.0 0.50
a c 20 2.0 1.00
b e 30 3.0 1.50
b a 50 5.0 2.50
c NULL 20 2.0 1.00
发表评论后,我明白了你的想法。
;with CTE AS(
select field1 as name, (.1 * field3) as value from #temp
Union
select field2 as name, (.05 * field3) as value from #temp
)
select name,sum(value) value
from CTE
WHERE name is not null
GROUP BY name
输出
name value
a 5.50
b 8.50
c 3.00
e 1.50