获取列具有相同值的行

时间:2014-02-15 16:14:23

标签: sql-server-2008

我遇到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

请帮帮我。谢谢!

1 个答案:

答案 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