2010-02-15 3 views
4

Друг предложил мне разместить здесь, так как мне нужна небольшая помощь!SQL Server: как рассчитать разные суммы в одном запросе

DB Layout:

**salestable** 
salesorder [primary, unique] (sales order number) 
salesman (salesperson id) 

**salesline** 
salesorder [many sales line to single salestable relationship] 
saleprice (line amount) 
isaccessory (0 or 1) 

Я хотел бы, в одной избранной, продажах суммы цены, как в общей сложности за продавец, но и просуммировать цену продажи где аксессуар = 1.

группировка и объединение не являются тем, на что я застрял, это то, могу ли я сделать двойную сумму.

В моей голове это будет выглядеть как

...salesman,sum(amount) as totalsales,sum(amount where accessory=1) as accessorysales... 

Но очевидно, что никогда не будет работать!

Заранее благодарен! (PS, я здесь очень новый, будьте нежны ...)

+0

@Jon: Я удалил «Убер» из названия. Многие проблемы SQL, обсуждаемые здесь, намного сложнее, чем это. – Tomalak

ответ

6
SELECT salesman, SUM(amount), SUM(CASE WHEN accessory = 1 THEN amount ELSE 0 END) 
FROM salestable t 
JOIN salesorder o 
ON  o.salesorder = t.salesorder 
GROUP BY 
     salesman 
+0

Вы скользкая рыба! Ты подтолкнул меня на это. +1 – Welbog

+0

@Welbog: вы не связывали ключи, не так ли? – Quassnoi

+0

@Quassnoi: Скорее всего, я был доволен объяснением того, что означает оператор CASE'. Вы просто прыгаете прямо в SQL, не объясняя это. – Welbog

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