2014-02-15 4 views
0

У меня проблема с SQL Server. У меня есть таблица АПолучить строки, где столбцы имеют одинаковое значение

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

Показать, что вы пробовали до сих пор, это не сложно запрос – Sparky

+0

Я знаю, что, но я только что узнал о SQL вы можете мне помочь? – user3313766

+0

Перефразируйте свой вопрос, это действительно очень сложно понять, чего вы хотите. – Doug

ответ

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 
+0

Спасибо. но я хочу получить результат ==> a = 5.5 (1.0 + 2.0 + 2.5) – user3313766

+0

Я понимаю, что вы хотите, пожалуйста, проверьте желаемый запрос, я отредактировал свой ответ. –

+0

Отлично! Это то, что я хочу. Слава Сиддику Махсуду. – user3313766

Смежные вопросы