2016-03-22 3 views
0

У меня есть следующая схема данных в таблице «пример»:MySQL: выбор и сумма нескольких наборов данных

State | Identifier | Data 
true |  A  | 60 
false |  B  | 20 
false |  A  | 10 
true |  C  | 20 
true |  A  | 40 
true |  B  | 9 
true |  C  | 30 
false |  A  | 60 

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

Например, должны иметь сумму 100, В сумме 9 и C суммы будет 50. Для одного идентификатора мой SQL запрос выглядит как

SELECT SUM(data) FROM example WHERE state = false AND identifier = "A" 

, который работает просто отлично.

Но, поскольку требуемые идентификаторы будут доставлены формой, которая может быть выбрана с помощью флажков, количество и значение идентификаторов изменяются. Я хотел бы получить результат выбранных идентификаторов A и C, например, как A=100 and C=50

Любые мысли?

Спасибо заранее,

Devyn

+1

Просто используйте ' GROUP BY', то есть: 'SELECT SUM (data) FROM example WHERE State = false И Идентификатор =" A "GROUP BY Идентификатор' – Terry

ответ

0

Вам нужно вам GROUP BY положение, используйте этот

SELECT Identifier, SUM(data) FROM example WHERE state = 'false' GROUP BY Identifier 

Я надеюсь, что это работает для вас.

0

Вы можете сгруппировать строки, возвращаемые в колонке Identifier, а именно:

SELECT 
    SUM(Data) 
FROM 
    example 
WHERE 
    State = false AND 
    Identifier = "A" 
GROUP BY 
    Identifier 
0

ГЭТ результат в один ряд вы можете использовать условную агрегацию:

SELECT SUM(CASE WHEN identifier = 'A' THEN data END) AS A_data, 
     SUM(CASE WHEN identifier = 'B' THEN data END) AS B_data, 
     SUM(CASE WHEN identifier = 'C' THEN data END) AS C_data 
FROM example 
WHERE state = false 
Смежные вопросы