#mysql #duplicates
#mysql #дубликаты
Вопрос:
У меня есть один вопрос в mysql.
myTable прямо внизу.
Location Name Stock
A-site Keyboard 2
A-site Mouse 1
B-site Keyboard 2
D-site Monitor 1
A-site Keyboard -1
C-site Desktop 1
Я хотел бы выразить это так:
Name A-site B-site C-site D-site Total
Keyboard 1 2 0 0 3
Mouse 1 0 0 0 1
Monitor 0 0 0 1 1
Desktop 0 0 1 0 1
необходимы дедупликация и суммирование.
Пожалуйста, помогите мне, как сделать запрос в mysql.
Спасибо.
Позже добавлено: «Местоположение» — это переменная. Итак, чтобы использовать sum путем сравнения, например SUM (ЕСЛИ ..), Мне нужно заранее знать дедуплицированный список. Суть этого вопроса заключается в следующем.
Комментарии:
1. Вы видели этот «учебник»
2. Рассмотрите возможность решения проблем отображения данных (например, сводной таблицы) в коде приложения. И не включайте «хочу» в вопросы, если активно не ищете отрицательные голоса.
3. @Noah Boegli, спасибо за ответ.
4. @Strawberry Спасибо за ответ. хорошо, я постараюсь быть осторожным в формулировках.
Ответ №1:
Это pivot
проблема. Это может быть решено следующим запросом:
select
Name,
sum(if(Location = 'A-site', Stock, 0)) as `A-site`,
sum(if(Location = 'B-site', Stock, 0)) as `B-site`,
sum(if(Location = 'C-site', Stock, 0)) as `C-site`,
sum(if(Location = 'D-site', Stock, 0)) as `D-site`,
sum(Stock) as total
from stock
group by Name
order by Name
;
Результат:
========== ======== ======== ======== ======== =======
| Name | A-site | B-site | C-site | D-site | total |
========== ======== ======== ======== ======== =======
| Desktop | 0 | 0 | 1 | 0 | 1 |
---------- -------- -------- -------- -------- -------
| Keyboard | 1 | 2 | 0 | 0 | 3 |
---------- -------- -------- -------- -------- -------
| Monitor | 0 | 0 | 0 | 1 | 1 |
---------- -------- -------- -------- -------- -------
| Mouse | 1 | 0 | 0 | 0 | 1 |
---------- -------- -------- -------- -------- -------
Комментарии:
1. Спасибо за ответ, круто. Прошу прощения за то, что по моей ошибке пропустил детали. Итак, чтобы записать в командной строке SUM (IF …), мне нужно знать массив местоположений, который был дедуплицирован заранее, потому что «Местоположение» является переменным каждый день (изменение имени, добавление и удаление …).