2012-11-28 2 views
2

я хочу суммировать значение в том же колонке, но в зависимости от определенного creteria в разных колонках т.е.значения Подводя в соответствии с различными критериями

value column1 column2 column3 
11  a  x  m 
45  b  y  n 
50  b  z  p 
12  c  x  p 

Так, например, Я хочу, чтобы общая сумма для «Value», когда column1 = Ь & column2 = г & колонка п

Я использовал следующий синтаксис:

sum(case when column1 = b & column2 = z & column n then value end) total 

, который работал, но я имею дело с большим количеством столбцов, так есть ли более простой способ сделать это. Я думал о циклах, но не могу понять циклы в SQL.

+1

Что вы делаете там работает; или вы можете переместить свое условие в оператор where, если вы только после одного результата. Нет простого способа добавить много разных условий без явного добавления условий, если не существует некоторого базового правила, которому они подчиняются. – JohnLBevan

ответ

1
SELECT SUM(value) FROM table GROUP BY col1, col2, col3 

и при необходимости для конкретного набора вы можете использовать

SELECT SUM(value) FROM table GROUP BY col1, col2, col3 HAVING col1='a' AND col2='n' AND col3='c' 
+0

Спасибо, это очень полезно !! – user1830777

+0

Его лучший метод, но я боюсь, мне все равно придется вводить все возможные комбинации между столбцами, что является самой большой проблемой, потому что у меня много столбцов. – user1830777

+0

Если вам не нужно указывать предложение (потому что тогда вам всегда нужно установить все vars на то, что вам нужно), вы можете создать хранимую процедуру (mysql5 +), чтобы автоматически создать запрос с группой по всем столбцам –

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